Re: [Piglit] [PATCH] sso: add test for linking gs without explicit locations
On Wed, 2016-02-03 at 21:08 +1300, Chris Forbes wrote: > This is undefined. Right. Its undefined but not illegal so what should we do? Leave the test as is testing for a simliar undefined behaviour as the Nvidia driver? Or fix the test and just let Mesa do whatever in this scenario? My feeling is we should leave the test as it, maybe update the comment if need be. Although I don't really feel to strongly either way so if you feel it's wrong to test for this feel free to fix it up :) > > From the OpenGL 4.5 (Core Profile) spec, 7.4.1 Shader Interface > Matching, p119: > > "At an interface between program objects, the set of inputs and > outputs are considered to > match exactly if and only if: > * Every declared input block or variable must have a matching output, > as described above. > * There are no output blocks or user-defined output variables > declared > without a matching input block or variable declaration. > > When the set of inputs and outputs on an interface between programs > matches exactly, all inputs are well-defined except when the > corresponding > outputs were not written in the previous shader. However, any > mismatch > between inputs and outputs results in all inputs being undefined > except for > cases noted below. > Even if an input has a corresponding output that matches exactly, > mismatches on other > inputs or outputs may adversely affect the executable code generated > to read or write the > matching variable." > > either > location qualifiers or builtins> > > On Fri, Jan 22, 2016 at 2:45 AM, Ilia Mirkin > wrote: > > Mesa treats each GS input as taking up 3 locations instead of 1, > > because > > it doesn't de-array the vars. This causes it to take col3 from VS > > instead of col1. > > > > Signed-off-by: Ilia Mirkin > > --- > > .../execution/vs-gs-linking.shader_test | 57 > > ++ > > 1 file changed, 57 insertions(+) > > create mode 100644 > > tests/spec/arb_separate_shader_objects/execution/vs-gs- > > linking.shader_test > > > > 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 > > new file mode 100644 > > index 000..938df13 > > --- /dev/null > > +++ b/tests/spec/arb_separate_shader_objects/execution/vs-gs- > > linking.shader_test > > @@ -0,0 +1,57 @@ > > +[require] > > +GLSL >= 1.50 > > +SSO ENABLED > > + > > +[vertex shader] > > +#version 150 > > + > > +in vec4 piglit_vertex; > > +out vec4 col0; > > +out vec4 col1; > > +out vec4 col2; > > +out vec4 col3; > > +out vec4 col4; > > +out vec4 col5; > > + > > +void main() { > > + gl_Position = piglit_vertex; > > + col1 = vec4(0, 1, 0, 1); > > + col0 = col2 = col3 = col4 = col5 = vec4(1, 0, 0, 1); > > +} > > + > > +[geometry shader] > > +#version 150 > > + > > +layout (triangles) in; > > +layout (triangle_strip, max_vertices=3) out; > > + > > +in vec4 color0[]; > > +in vec4 color1[]; > > + > > +out vec4 color; > > + > > +void main() { > > + int i; > > + for (i = 0; i < 3; i++) { > > + gl_Position = gl_in[i].gl_Position; > > + color = color1[i]; > > + EmitVertex(); > > + } > > +} > > + > > +[fragment shader] > > +#version 150 > > + > > +in vec4 color; > > +out vec4 col; > > + > > +void main() { > > + col = color; > > +} > > + > > +[test] > > +clear color 0.2 0.2 0.2 0.2 > > +clear > > + > > +draw rect -1 -1 2 2 > > +probe all rgba 0 1 0 1 > > -- > > 2.4.10 > > > > ___ > > Piglit mailing list > > Piglit@lists.freedesktop.org > > http://lists.freedesktop.org/mailman/listinfo/piglit > > > ___ > Piglit mailing list > Piglit@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/piglit ___ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit
Re: [Piglit] [PATCH] sso: add test for linking gs without explicit locations
This is undefined. >From the OpenGL 4.5 (Core Profile) spec, 7.4.1 Shader Interface Matching, p119: "At an interface between program objects, the set of inputs and outputs are considered to match exactly if and only if: * Every declared input block or variable must have a matching output, as described above. * There are no output blocks or user-defined output variables declared without a matching input block or variable declaration. When the set of inputs and outputs on an interface between programs matches exactly, all inputs are well-defined except when the corresponding outputs were not written in the previous shader. However, any mismatch between inputs and outputs results in all inputs being undefined except for cases noted below. Even if an input has a corresponding output that matches exactly, mismatches on other inputs or outputs may adversely affect the executable code generated to read or write the matching variable." On Fri, Jan 22, 2016 at 2:45 AM, Ilia Mirkin wrote: > Mesa treats each GS input as taking up 3 locations instead of 1, because > it doesn't de-array the vars. This causes it to take col3 from VS > instead of col1. > > Signed-off-by: Ilia Mirkin > --- > .../execution/vs-gs-linking.shader_test| 57 > ++ > 1 file changed, 57 insertions(+) > create mode 100644 > tests/spec/arb_separate_shader_objects/execution/vs-gs-linking.shader_test > > 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 > new file mode 100644 > index 000..938df13 > --- /dev/null > +++ > b/tests/spec/arb_separate_shader_objects/execution/vs-gs-linking.shader_test > @@ -0,0 +1,57 @@ > +[require] > +GLSL >= 1.50 > +SSO ENABLED > + > +[vertex shader] > +#version 150 > + > +in vec4 piglit_vertex; > +out vec4 col0; > +out vec4 col1; > +out vec4 col2; > +out vec4 col3; > +out vec4 col4; > +out vec4 col5; > + > +void main() { > + gl_Position = piglit_vertex; > + col1 = vec4(0, 1, 0, 1); > + col0 = col2 = col3 = col4 = col5 = vec4(1, 0, 0, 1); > +} > + > +[geometry shader] > +#version 150 > + > +layout (triangles) in; > +layout (triangle_strip, max_vertices=3) out; > + > +in vec4 color0[]; > +in vec4 color1[]; > + > +out vec4 color; > + > +void main() { > + int i; > + for (i = 0; i < 3; i++) { > +gl_Position = gl_in[i].gl_Position; > +color = color1[i]; > +EmitVertex(); > + } > +} > + > +[fragment shader] > +#version 150 > + > +in vec4 color; > +out vec4 col; > + > +void main() { > + col = color; > +} > + > +[test] > +clear color 0.2 0.2 0.2 0.2 > +clear > + > +draw rect -1 -1 2 2 > +probe all rgba 0 1 0 1 > -- > 2.4.10 > > ___ > Piglit mailing list > Piglit@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/piglit > ___ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit
Re: [Piglit] [PATCH] sso: add test for linking gs without explicit locations
On Thu, 2016-01-21 at 08:45 -0500, Ilia Mirkin wrote: > Mesa treats each GS input as taking up 3 locations instead of 1, > because > it doesn't de-array the vars. This causes it to take col3 from VS > instead of col1. > > Signed-off-by: Ilia Mirkin As discussed on IRC the desktop spec leaves SSO interface validation up to the dev so the mismatch between VS and GS should be fine as far as I understand. Reviewed-by: Timothy Arceri > --- > .../execution/vs-gs-linking.shader_test| 57 > ++ > 1 file changed, 57 insertions(+) > create mode 100644 > tests/spec/arb_separate_shader_objects/execution/vs-gs > -linking.shader_test > > 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 > new file mode 100644 > index 000..938df13 > --- /dev/null > +++ b/tests/spec/arb_separate_shader_objects/execution/vs-gs > -linking.shader_test > @@ -0,0 +1,57 @@ > +[require] > +GLSL >= 1.50 > +SSO ENABLED > + > +[vertex shader] > +#version 150 > + > +in vec4 piglit_vertex; > +out vec4 col0; > +out vec4 col1; > +out vec4 col2; > +out vec4 col3; > +out vec4 col4; > +out vec4 col5; > + > +void main() { > + gl_Position = piglit_vertex; > + col1 = vec4(0, 1, 0, 1); > + col0 = col2 = col3 = col4 = col5 = vec4(1, 0, 0, 1); > +} > + > +[geometry shader] > +#version 150 > + > +layout (triangles) in; > +layout (triangle_strip, max_vertices=3) out; > + > +in vec4 color0[]; > +in vec4 color1[]; > + > +out vec4 color; > + > +void main() { > + int i; > + for (i = 0; i < 3; i++) { > +gl_Position = gl_in[i].gl_Position; > +color = color1[i]; > +EmitVertex(); > + } > +} > + > +[fragment shader] > +#version 150 > + > +in vec4 color; > +out vec4 col; > + > +void main() { > + col = color; > +} > + > +[test] > +clear color 0.2 0.2 0.2 0.2 > +clear > + > +draw rect -1 -1 2 2 > +probe all rgba 0 1 0 1 ___ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit