Update the RELEASING notes
kms: add public API to override the default configuration of outputs

Add API to allow complex applications using the KMS backend
to go almost straight to direct configuration (which is not possible
because Cogl needs to be in charge of buffers and FB objects).

https://bugzilla.gnome.org/show_bug.cgi?id=705837

Reviewed-by: Robert Bragg <robert@linux.intel.com>
gles2: Use GL_ES instead of __VERSION__ for setting precision

Mesa has started getting picky about specifying the precision for
floating types in the fragment shader. We already have a default
precision specifier in all the fragment shaders but apparently this
wasn't working because it is only used when the __VERSION__ define is
100 and Mesa is reporting 110. Regardless of whether Mesa is doing the
right thing or not I think it makes sense to use GL_ES instead of
__VERSION__ because we will also need the precision specifier if we
start requesting GLSL 3.0. The GLES specification explictly states
that GL_ES will only be defined for GLES and this is similar to what
the internal meta shaders do in Mesa.

http://cgit.freedesktop.org/mesa/mesa/commit/?id=cabd45773b58d6aa482

Reviewed-by: Robert Bragg <robert@linux.intel.com>
texture-rectangle: Initialize is_foreign

So we don't read an initializes value later on. Caught by valgrind:

Conditional jump or move depends on uninitialised value(s)
  _cogl_object_texture_rectangle_indirect_free (cogl-texture-rectangle.c:105)
  _cogl_object_context_indirect_free (cogl-context.c:453)
  ...
  main (text.c:149)

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Reviewed-by: Neil Roberts <neil@linux.intel.com>
cogl/cogl-bitmap-conversion.c: Include missed header

The cogl-texture-private.h needs to be included as
_cogl_texture_needs_premult_conversion, so that we can avoid implicit
declaration warnings of that symbol (aka C4013 on MSVC).

Reviewed-by: Neil Roberts <neil@linux.intel.com>
cogl-path: Add a symbols file

This is used for exporting symbols when Cogl-Path becomes a DLL (.so)
of its own, so one can use and process this file with a preprocessor for
e.g. and generate a .def file that can be used for this purpose.  Dist the
symbols file as well.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
MSVC Projects: Add project templates for cogl-path

This adds template project files that is used to build cogl-path, where the
source files can be filled in using autotools. Note that although cogl-path
is built as a static library, items to build DLLs for this is intentionally
left in there as this is intended to be a shared library later.
Update Visual Studio Property Sheets

-Add items to generate the enumeration sources
-Add items to build the CoglPath library, which was split out
-Make the header installation up to date, especially due to the split out
 of Cogl-Path
Visual Studio Projects: Use Custom Build Rules

Use custom build rules to generate the enumeration sources and the .def
files so that the IDE will regenerate those files upon change and clean
them when a clean up request is requested.

Also make the projects reflect more closely the file layout in the
current source tree
docs: Fix the documentation for texture coordinates in snippets

The documentation for the builtin varyings for the texture coordinates
was wrongly claiming that the varyings are stored in an array. This
was changed in e55b64a9cdc9 so that each layer gets its own
independent varying.

The documentation was also referring to texture units instead of layer
numbers. The texture units are no longer publicly exposed in the
shaders and instead everything should in theory be expressed in terms
of layer numbers.

Reviewed-by: Robert Bragg <robert@linux.intel.com>
Remove unused tex_coord_declarations variable

This variable was a leftover from before commit e55b64a9cdc93 where
the texture coord varyings were declared as an array as part of the
shader boilerplate.

Reviewed-by: Robert Bragg <robert@linux.intel.com>
Always add the #version pragma to shaders

Previously we would only add the #version pragma to shaders when
point sprite texture coordinates are enabled for a layer so that we
can access the gl_PointCoord builtin. However I don't think there's
any good reason not to just always request GLSL version 1.2 if it's
available. That way applications can always use gl_PointCoord without
having to enable point sprite texture coordinates.

This adds a glsl_version_to_use member to CoglContext which is used to
generate the #version pragma as part of the shader boilerplate. On
desktop GL this is set to 120 if version 1.2 is available, otherwise
it is left at 110. On GLES it is always left as 100.

Reviewed-by: Robert Bragg <robert@linux.intel.com>
Add the cogl_point_coord snippet builtin

This adds a #define for gl_PointCoord to all shaders so that it can be
accessed with a name in the Cogl namespace.

Reviewed-by: Robert Bragg <robert@linux.intel.com>
Add a conformance test for using cogl_point_coord in a shader

This adds a modification to the test-point-sprite test which uses a
shader snippet which directly references cogl_point_coord instead of
relying on cogl_pipeline_set_layer_point_sprite_coords_enabled to
replace the texture coordinates with the point coords.

Reviewed-by: Robert Bragg <robert@linux.intel.com>
Add Autotools Items to Complete the Cogl-Path MSVC Projects

This adds a centralized autotools Makefile to be used in the completion
of the project files for Cogl-Path for now, which can be used also in
Cogl, Cogl-Pango and possibly Cogl-Gst so that we could have less clutter
in the autotools files.

This patch set will also allow the Cogl-Path project files to be filled in
during 'make dist' and make them distributed during a tarball release.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
Update .gitignore

(cherry picked from commit d749a28cb0293a6676b7c7e2dce34562ffdc1425)

Conflicts:
	.gitignore

Reviewed-by: Neil Roberts <neil@linux.intel.com>
Fix building the conformance and unit tests on mingw32

The unit tests were failing to build with mingw32 because the
libtest-fixtures was being included both by libcogl and the
test-conformance and test-unit executables. That meant that the
symbols were defined twice and it wouldn't link.

The rule which depends on test-unit being built needs to be called
test-unit.exe on Windows so this patch fixes it to use the $(EXEEXT)
variable to get the right name.

Reviewed-by: Robert Bragg <robert@linux.intel.com>
Fix generating the unit test wrappers when building with MingW32

For some reason the unit test symbols end up in the read-only data
section when building on windows rather than the initialised data
section so they have a different letter in the list generated by nm.
They also begin with an underscore because windows likes to add
underscores to symbols for some reason. This patch changes the regular
expressions in the code to generate the wrapper list so that it
accepts either way.

Reviewed-by: Robert Bragg <robert@linux.intel.com>
Add unit test to verify that modifying uniforms doesn't create chain

The recommended usage model for rendering pipelines with minor changes
is to make a copy of a base pipeline just before rendering and then
modify that. The new pipeline can then be used as the base pipeline
for the next paint. Currently this has a known problem when modifying
uniform values in that Cogl won't prune the redundant ancestry and
instead it will end up with an ever-growing chain of pipelines. This
is particularly bad for something like CoglGST where it could also end
up leaking textures for the video frames if the pipelines are used to
render video.

The patch adds a test case for that situation so that we won't forget
about the problem. The test is maked as a known failure. Additionally
the patch adds a similar test for setting the blend constant to
constrast the test with some state that does work correctly.

Reviewed-by: Robert Bragg <robert@linux.intel.com>
Update Visual Studio Project Files

The solution files which are updated due to the split of Cogl-Path need to
be pushed as well.