piglit: Switch a bunch of tests over to piglit_build_simple_program.

Since I was about to clean up some piglit_compile_shader_text calls, I
was looking at all these anyway.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
piglit: Always request GNU C extensions.

GNU C has a bunch of useful extensions making C a useful language.
Most of those extensions are also available on the BSDs, but MSVC
loses out.  The solution for MSVC is to write the same wrapper we'd
end up writing per test if we were limiting ourselves to non-GNU C.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
util: Print shader source and exit in the compile failure case.

This util function was printing to stderr anyway (so it's going to be
a piglit failure according to the summary), and we always want to stop
and look at the source producing the error.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
fbo-integer: Reuse piglit_require_GLSL_version().

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
util: Fix rgb9e5's big-endian test

__BIG_ENDIAN__ is predefined by gcc at least, MESA_BIG_ENDIAN isn't
defined anywhere in piglit though.

Signed-off-by: Adam Jackson <ajax@redhat.com>
Apply the same local fix to enum.spec that we did for enumext.spec.
Include enum.spec along with enumext.spec for piglit-dispatch.

There are three differences between the two (as verified by sort, sed,
uniq, and diff):

- enum.spec includes GLES extension enums (since it's used for
  maintaining uniqueness of enums in the registry), which we want to
  include for cross-API compatibility.
- enum.spec includes some entries for known GL versions and GL extensions.
- enumext.spec has a few more synonyms for enums (since it's the
  file used for generating the official glext.h for desktop).

This change only introduces new #define lines to generated-dispatch.h.

v2: Make the statement about "only introduces new #define lines"
    actually true by continuing to emit based on the categories we
    collected during parsing, except with them defined to '1' instead
    of '', to match actual glext definitions and what gets
    autogenerated from enum.ext.

Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
core.py: Fix sporadic loss of tests in summary

The checking in TestrunResult to determine if a file was proper json or
not is very fragile: it assumes that the last line of the file will be
}. Sometimes this triggers and rebuilds a valid json file, dropping the
last test and resulting in python overhead.

This patch replaces that check with a try/except block. This block
attempts to load the json file with json.load, and on failure attempts
to fix the json.

V2: - replaces json.loads with json.load: this was causing an error but
	  being caught by the except block.
	- Corrects issue created by the try block changing file.tell() so
	  that file.seek would fail in self.__repairFile()
V3: - refactor to remove duplicate code

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
oes_fixed_point: Add ES1 test for fixed-point attribute arrays (v2)

Test GL_FIXED with glColorPointer and glVertexPointer. Verifies Mesa
commit 7a9f4d3e.

v2: Remove glViewport and piglit_ortho_projection.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
glean: Don't link X11 on MacOSX.
glean: Disable on MacOSX.

Simply impossible to get it working these days.
Test that fast color clears are resolved even if front rendering intervenes.
Set config.requires_displayed_window in tests that use front buffers.

When running tests with a non-composited window manager, it isn't safe
to access the front buffer until after the window is shown.  This
patch sets config.requires_displayed_window in tests that access front
buffers, to make sure that the piglit framework exposes the window,
even when testing in "-auto" mode.

Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
util/x11: Wait for expose event in manual mode or with front buffer tests.

When running piglit in manual mode (no "-auto" command-line option is
given), there's no point in calling piglit_display() before the window
is exposed.  This just leads to confusion because it will be called
again once the window appears, leading to duplicate test output in the
console window.

When running piglit in "-auto" mode, if the test accesses the front
buffer, then we need to wait until the window is exposed before
calling piglit_display(), since a front buffer is not guaranteed to be
available before then (in practice, this only happens with
non-compositing window managers).  However, if the test doesn't access
the front buffer, then it is still safe to call piglit_display()
before the expose event; doing so avoids wasting time.

Note: there are two known bugs that cause sporadic failures in certain
piglit tests with Mesa/Intel hardware (and possibly other Mesa
drivers).  See bugs #1 and #2 in
http://lists.freedesktop.org/archives/mesa-dev/2013-May/039985.html.
This change seems to exacerbate those sporadic failures.  As far
as I'm aware, the tests that are affected are:

- spec/!OpenGL 1.1/drawbuffer-modes
- spec/EXT_framebuffer_blit/fbo-sys-blit
- spec/EXT_framebuffer_blit/fbo-sys-sub-blit

I have patches on the list to fix bug #1 from that email (see
http://lists.freedesktop.org/archives/mesa-dev/2013-May/040010.html),
and Eric Anholt is working on bug #2.  I believe that once those fixes
land, the above tests should pass consistently.

Based on work by Chad Versace.

Cc: Chad Versace <chad.versace@linux.intel.com>
Cc: Eric Anholt <eric@anholt.net>

Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
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.
Test interaction between fast color clears and glXSwapBuffers.
!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.