gs: Test primitive ID input.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
gs: Verify consistency checking of geometry shader input layouts.

These tests verify that the implementation properly detects mismatches
between geometry shader input layout declarations, whether they occur
within the same compilation unit or within multiple compilation units.

Mismatches that occur within the same compilation unit should produce
a compile error.
gs: Verify intra-shader checking of input layout vs. explicitly sized arrays.

These tests verify that the implementation properly detects mismatches
between a geometry shader input layout declaration and an explicitly
sized geometry shader input array appearing in the same shader (the
size of each input array must match the number of vertices per
primitive implied by the input layout declaration).

v2: Call .length() from inside an array declaration to verify that the
compiler properly treats it as a constant expression.
gs: Verify inter-shader checking of input layout vs. explicitly sized arrays.

These tests verify that the implementation properly detects mismatches
between a geometry shader input layout declaration and an explicitly
sized geometry shader input array appearing in a different shader (the
size of each input array must match the number of vertices per
primitive implied by the input layout declaration).
gs: Verify intra-shader checking of input layout vs. implicitly sized arrays.

These tests verify the following interactions between geometry shader
input layout declarations and implicitly sized geometry shader input
arrays:

- If an input array declaration does not specify a size, and it
  follows an input layout declaration, it is sized according to the
  input layout.

- If an input layout declaration follows an input array declaration
  that didn't specify a size, the input array declaration is given a
  size at the time the input layout declaration appears.  An error
  should be reported if the new size conflicts with previous uses of
  the array.

v2: Call .length() from inside an array declaration to verify that the
compiler properly treats it as a constant expression.  Remove
gs-input-sizing-implied-length.shader_test, since it is redundant with
gs-input-sizing-implied-length.geom.
gs: Verify inter-shader checking of input layout vs. implicitly sized arrays.

These tests verify that unsized geometry shader input arrays in one
compilation unit are properly sized according to a geometry shader
input layout declaration in another compilation unit, and that a link
error occurs if such sizing would conflict with a static usage of the
array.

v2: Remove gs-input-sizing-length-after-layout.shader_test, since it
is redundant with gs-input-sizing-length-after-layout.geom.
gs: Verify consistency checking of explicitly sized input arrays.

These tests verify that the implementation properly detects mismatches
between sized geometry shader input arrays appearing within the same
compilation unit.
gs: Verify checking of sized vs. unsized geometry shader input arrays.

These tests verify that if a single geometry shader compilation unit
contains a declaration of both an unsized and a sized input array, the
presence of the sized input array doesn't cause the unsized array to
acquire a size.
gs: Verify that an error is generated if no input layout is specified.
gs: Test that geometry shader inputs must be arrays.

v2: Additional tests.
gs: Test that geometry shader input declaration rules don't apply to outputs.
shader_runner: Add the ability to enable GL_PROGRAM_POINT_SIZE.
shader_runner: Remove useless "TODO" comment.

I introduced this comment back in commit f9d224d0 (Add vbo support to
shader_runner), and I don't remember what I meant by it.
shader_runner: Allow "draw arrays" if no [vertex data] section.

For some geometry shader tests, there's no need for any vertex shader
inputs at all--the geometry shader produces all the data itself.  To
allow tests like these, we need to be able to issue a "draw arrays"
command with any number of input vertices, even if there is no [vertex
data] section.

This patch disables shader_runner's "draw arrays" overflow checks in
the event that there is no [vertex data] section, so that the "draw
arrays" command can be used.  This is safe, since the lack of a
[vertex data] section means that no vertex attrib arrays are enabled,
so the shader won't try to access the vertex input data at all.
gs: Test gl_PointSize output.
gs: Test gl_ClipDistance output.
gs: Test gl_PrimitiveID output.
gs: Test EndPrimitive() functionality.
Add PIGLIT_STRIP_ARG() macro for extracting args during piglit config.

v2: Fix update of *argc.
Use PIGLIT_STRIP_ARG() in formats.c