Reviewed-by: Ian Romanick <[email protected]> On 09/14/2013 10:44 AM, Paul Berry wrote: > --- > .../execution/geometry/core-inputs.shader_test | 98 > ++++++++++++++++++++++ > 1 file changed, 98 insertions(+) > create mode 100644 > tests/spec/glsl-1.50/execution/geometry/core-inputs.shader_test > > diff --git a/tests/spec/glsl-1.50/execution/geometry/core-inputs.shader_test > b/tests/spec/glsl-1.50/execution/geometry/core-inputs.shader_test > new file mode 100644 > index 0000000..f0df9f2 > --- /dev/null > +++ b/tests/spec/glsl-1.50/execution/geometry/core-inputs.shader_test > @@ -0,0 +1,98 @@ > +# Check proper functioning of the following geometry shader inputs > +# (which are available in both core and compatibility profiles): > +# > +# - gl_Position > +# - gl_PointSize > +# - gl_ClipDistance (when accessed using constant array indices) > + > +[require] > +GLSL >= 1.50 > + > +[vertex shader] > +#version 150 > + > +in float offset; > + > +void main() > +{ > + gl_Position = offset + vec4(0.0, 1.0, 2.0, 3.0); > + gl_PointSize = offset + 4.0; > + gl_ClipDistance[0] = offset + 5.0; > + gl_ClipDistance[1] = offset + 6.0; > + gl_ClipDistance[2] = offset + 7.0; > + gl_ClipDistance[3] = offset + 8.0; > + gl_ClipDistance[4] = offset + 9.0; > + gl_ClipDistance[5] = offset + 10.0; > + gl_ClipDistance[6] = offset + 11.0; > + gl_ClipDistance[7] = offset + 12.0; > +} > + > +[geometry shader] > +#version 150 > + > +layout(triangles) in; > +layout(triangle_strip, max_vertices = 4) out; > +out vec4 color; > + > +void main() > +{ > + const vec4 vertices[4] = vec4[4]( > + vec4(-1.0, -1.0, 0.0, 1.0), > + vec4(-1.0, 1.0, 0.0, 1.0), > + vec4( 1.0, -1.0, 0.0, 1.0), > + vec4( 1.0, 1.0, 0.0, 1.0) > + ); > + > + bool ok = true; > + for (int i = 0; i < 3; i++) { > + float offset = 100.0 * float(i); > + if (gl_in[i].gl_Position != offset + vec4(0.0, 1.0, 2.0, 3.0)) > + ok = false; > + if (gl_in[i].gl_PointSize != offset + 4.0) > + ok = false; > + if (gl_in[i].gl_ClipDistance[0] != offset + 5.0) > + ok = false; > + if (gl_in[i].gl_ClipDistance[1] != offset + 6.0) > + ok = false; > + if (gl_in[i].gl_ClipDistance[2] != offset + 7.0) > + ok = false; > + if (gl_in[i].gl_ClipDistance[3] != offset + 8.0) > + ok = false; > + if (gl_in[i].gl_ClipDistance[4] != offset + 9.0) > + ok = false; > + if (gl_in[i].gl_ClipDistance[5] != offset + 10.0) > + ok = false; > + if (gl_in[i].gl_ClipDistance[6] != offset + 11.0) > + ok = false; > + if (gl_in[i].gl_ClipDistance[7] != offset + 12.0) > + ok = false; > + } > + > + for (int i = 0; i < 4; i++) { > + gl_Position = vertices[i]; > + color = ok ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0); > + EmitVertex(); > + } > +} > + > +[fragment shader] > +#version 150 > + > +in vec4 color; > + > +void main() > +{ > + gl_FragColor = color; > +} > + > +[vertex data] > +offset/float/1 > +0 > +100 > +200 > + > +[test] > +clear color 0.0 0.0 0.0 0.0 > +clear > +draw arrays GL_TRIANGLES 0 3 > +probe all rgba 0.0 1.0 0.0 1.0 >
_______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
