Geometry shaders: Test gl_ClipDistance input (GLSL 1.50)

This patch adds piglit tests to ensure that gl_ClipDistance works
properly as a geometry shader input.

v2: In accordance with GLSL 1.50 requirements, do all re-declarations
of gl_ClipDistance within gl_PerVertex interface block.

Reviewed-by: Fabian Bieler <fabianbieler@fastmail.fm>
Geometry shaders: test gl_ClipDistanceIn (ARB_geometry_shader4)

Since ARB_geometry_shader4 is written against the OpenGL 2.0
specification (which predates gl_ClipDistance), it does not specify
how gl_ClipDistance should be adapted for use in geometry shaders.
However, there is an obvious analogy to the behaviour of gl_TexCoord
(which, like clip distance, is a vertex shader output whose type is a
1D array).  Specifically, the geometry shader should have access to a
2D input array gl_ClipDistanceIn array, where the first index is the
input vertex, and the second index is analogous to the index on
gl_ClipDistance.

This patch adds piglit tests to ensure that gl_ClipDistanceIn works
properly.

Reviewed-by: Fabian Bieler <fabianbieler@fastmail.fm>
Fix clip-distance-explicit-too-large.frag test

The test incorrectly declared gl_ClipDistance as an "out" variable.
This is incorrect--in a fragment shader it should be an "in" variable.

This wasn't causing a piglit failure, since the test was expected to
produce a compile error.  It just means that it wasn't testing what it
was supposed to.
Test that fast color clears are resolved even if front rendering intervenes.
Test a front buffer corner case: invalidate causes data loss.

Cc: Eric Anholt <eric@anholt.net>

v2: Move to spec/gl-1.0.  Add to all.tests.
!UPSTREAM: Performance micro-benchmark for fast color clears.
util: Create generic piglit_draw_rect() functions.  TODO: rework.

This patch adds the following functions to piglit-util-gl-common:
- piglit_draw_rect_generic
- piglit_draw_rect_back_generic
- piglit_draw_rect_z_generic
- piglit_draw_rect_tex_generic

These functions are similar to corresponding functions without the
"_generic" suffix, except that instead of delivering vertex position
and texture coordinates to the vertex shader using glVertexPointer()
and glTexCoordPointer(), they deliver to the generic attributes
PIGLIT_ATTRIB_POS and PIGLIT_ATTRIB_TEX.  These functions use VBO's
and VAO's when available, so they may be used when testing core
contexts.

These functions also work with compatibility contexts and with all
GLES versions.  Since GLES1 doesn't support generic vertex attributes,
we fall back to using glVertexPointer() and glTexCoordPointer() in the
GLES1 case.

When building GLES tests, the behaviour of the new _generic functions
is for all intents and purposes the same as that of the pre-existing
non-generic functions.  So to avoid code duplication, the non-generic
functions simply call their generic equivalents in GLES builds.
WIP: start testing GS in/out types
WIP: fix shader_runner error reporting when vertex data included.
WIP: Basic test of GS input varyings
Geometry shaders: add a basic EndPrimitive() test.
WIP: large EndPrimitive test
shader_runner: Add missing newlines to error messages.

Certain shader error messages were missing newlines, leading to the
error message being concatenated on the same line with "PIGLIT:
{'result': 'fail' }".
!UPSTREAM: Start working on a function accuracy test
!UPSTREAM: more experimentation with function accuracy
!UPSTREAM: read-after-swap

This works but I'm not convinced it's a good idea yet.

TODO:
- Discuss on mailing list.
!UPSTREAM: hacks
Front buffer rendering sanity test
Hacks
Clean up fbo-sys-blit.c