Commit Graph

2846 Commits

Author SHA1 Message Date
Neil Roberts
73b95dd451 cogland: Add an option to split the desktop into four outputs
Previously Cogland would always split the desktop into four outputs.
Although this is quite neat to demonstrate that it's possible, it's
quite annoying in practice while testing. This patch turns it into a
command line option which defaults to off.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 5570bf892268c8d2ea36bc26473aeb607c0e2c1d)
2013-03-22 00:13:36 +00:00
Neil Roberts
13675ab440 configure: Add a minimum required version for the wayland package
Previously Cogl would accept any version of Wayland when building the
Wayland backend. Seeing as there is now a stable API we might as well
specify that we require at least version 1.0.0. This is now also
mentioned in the README. This patch also changes it to use
PKG_CHECK_MODULES instead of PKG_CHECK_EXISTS because it does need to
abort if it fails and it shouldn't be checking it silently.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit d899955b714e5ed50c6c89b9fde4b341bcf80558)
2013-03-22 00:13:36 +00:00
Neil Roberts
5334547c00 cogland: Update to the Wayland 1.0 API
This updates Cogland example compositor to use the stable Wayland 1.0
API.

• When the client attaches a new buffer to a surface it is now added
  to a struct contaning pending the state instead of immediately
  switching to the new buffer. This state is then flushed when the
  surface is committed.

• The frame callbacks are now queued in a pending list and only added
  to the compositor's main list when the surface is committed. Both
  lists are now a wl_list instead of a GQueue because it makes it
  easier to remove the callback without knowing which list it is in.

• When the buffer is destroyed for a surface the resource for the
  buffer is now sent a release event.

• It now flushes the clients in the prepare for the for the Wayland
  event GSource. This is part of the multi-threaded API in this
  Wayland patch:

  http://cgit.freedesktop.org/wayland/wayland/commit/?id=53d24713a31d59

• Implements a dummy wl_region interface. The only interfaces that
  actually use regions (the opaque and input regions) are ignored but
  we need the interface to create a resource.

• Most the of the SHM interface is now implemented directly in
  libwayland-server except that it still needs to copy the data to the
  subregion of the texture when the damage region is committed.

• The callback list for when a resource is destroyed has been unified
  into a generic wl_signal implementation so the signature for the
  functions has been changed.

  http://cgit.freedesktop.org/wayland/wayland/commit/?h=6802eaa68af9022

• The wl_buffer struct no longer has a user_data parameter so we can't
  attach our own CoglandBuffer data to it. Instead the CoglandSurface
  now just keeps track of the wl_buffer directly.

• The Cogland example is now unconditionally built instead of checking
  the Wayland version number in the configure script. It looks like
  this check was broken anyway because it was checking the version of
  the gbm package rather than a Wayland package.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 4cbbc0f8e3de1fd44dee08b487f1c3f97dda8ede)

Conflicts:
	examples/Makefile.am
	examples/cogland.c
2013-03-22 00:13:32 +00:00
Plamena Manolova
b833d26b3f Fix multiple snippet interleaving bug
Interleaving multiple snippets with different hooks
(COGL_SNIPPET_HOOK_VERTEX and COGL_SNIPPET_HOOK_VERTEX_TRANSFORM,
for instance) used to cause a bug during shader code generation.

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

(cherry picked from commit 38ca76695d54bbbfe3b940a6d0b2ae879e6fd66b)
2013-03-20 14:37:58 +00:00
Neil Roberts
22363a4137 Prune redundant pipeline ancestry after adding a layer difference
Adding a layer difference may mean the pipeline overrides all of the
layers of its parent which might make the parent redundant so we
should try to prune the hierarchy.

This is particularly important for CoglGst because whenever a new
frame is ready it tries to make a copy of the pipeline it last used
and then replace all of the textures in the layers. Without this patch
the new pipeline would keep the parent pipeline alive which means also
keeping the old textures alive so all of the frames of the video would
effectively be leaked.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 576c7b55aa835448c977f1d79d128dffd40e7cd8)
2013-03-19 17:53:43 +00:00
Neil Roberts
f9456574ef Add test to verify replacing a layer doesn't leak the pipeline parent
The current recommendation for pipelines is that once they have been
used for painting then they should be considered immutable. If you
want to modify a pipeline you should instead make a copy and unref the
original pipeline. Internally we try to check whether the modified
copy replaces all of the properties of the parent and prune a
redundant ancestor hierarchy. Pruning the hierarchy is particularly
important if the pipelines contain textures because otherwise the
textures may be leaked when the parent pipeline keeps a reference to
it.

This test verifies that usage pattern by creating a chain of pipeline
copies each with their own replacement texture. Some user data is then
set on the textures with a callback so that we can verify that once
the original pipelines are destroyed then the textures are also
destroyed.

The test is currently failing because Cogl doesn't correctly prune
ancestory for layer state authority.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 3fbec92acb90008492eb125025f92b42d6e07930)
2013-03-19 17:53:43 +00:00
Gheyret Kenji
a10b774f99 Updated Uyghur translation
Signed-off-by: Gheyret Kenji <gheyret@gmail.com>
2013-03-17 13:41:00 +09:00
Duarte Loreto
237478d426 Converted Portuguese translation to New Spelling (Novo AO) 2013-03-17 00:42:47 +00:00
Chun-wei Fan
92c1d7a491 Update config.h.win32.in
The config.h.in generated by autotools has much more entries than before,
so update the pre-configured config.h.win32.in.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2013-03-15 00:26:35 +08:00
Chun-wei Fan
8906f7139a Update cogl.symbols
Add the newly-added symbols during the development cycle, and drop those
that are dropped.  Also, clean up the private symbols that were exported,
those that are still left in cogl.symbols are those still being referenced
by Cogl-Pango

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2013-03-15 00:25:41 +08:00
Milo Casagrande
7c02a9eebf [l10n] Updated Italian translation. 2013-03-14 10:59:51 +01:00
Chun-wei Fan
72b25bd098 Update Visual Studio Project Files
-Make entries of the property sheets more like the property sheets of the
 projects in the GTK+/Clutter stack, mainly changing CoglApiVersion to
 ApiVersion, for better consistency, and update the corresponding projects
-Add command item in property sheets to build introspection files for Cogl
 and Cogl Pango.
-Stop building and installing the cogl-msaa example, as it is something
 that isn't really meant for Windows, and causes an internal compiler error
 on Visual Studio 2010 x64 builds
2013-03-07 11:37:32 +08:00
Pavol Klačanský
d77714b6a3 Updated Slovak translation 2013-03-06 17:39:50 +00:00
Robert Bragg
e886ad46e0 Revert "cogl-buffer: Stop warning spam running in sw rendering"
This reverts commit 83dbf79986981fac9ec0f2575b7c7cb32f629f0f.

On further consideration we realized that needing this change either
indicated a bug in the code using cogl, or that it was a symptom of
some other bug in Cogl resulting in us returning NULL in
cogl_buffer_map_range but not returning a CoglError too.

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

(cherry picked from commit 8c5127c712570f1ea0d495a7fe7290ae5ee60ce6)
2013-03-06 16:46:03 +00:00
Robert Bragg
2fa7b5573d gl: ensure depth isn't masked during clear
If a pipeline has been flushed that disables depth writing and then we
try to clear the framebuffer with cogl_framebuffer_clear4f, passing
COGL_BUFFER_BIT_DEPTH then we need to make sure that depth writing is
re-enabled before issuing the glClear call. We also need to make sure
that when the next primitive is flushed that we re-check what state the
depth mask should be in.

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

(cherry picked from commit 3cf497042897d1aa6918bc55b71a36ff67e560b9)
2013-03-06 16:45:31 +00:00
Robert Bragg
3c5ebb8752 framebuffer: vp change = clip change for gen6 workaround
This makes sure that a viewport change when comparing between separate
framebuffers also implies a clip change when we are applying the Intel
gen6 workaround for broken viewport clipping. Without this then
switching between different size framebuffers could leave a scissor
matching the size of a previous framebuffer.

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

(cherry picked from commit f23f2129c58550f819cff783f47039d7bd91391e)
2013-03-06 16:45:14 +00:00
Robert Bragg
b62b9a68bb bitmap: don't mark bitmap bound on _gl_bind error
This makes some changes to _cogl_bitmap_gl_bind to be more paranoid
about bad access arguments and make sure we don't mark a bitmap as bound
if there was an error in _cogl_buffer_gl_bind.

We now validate the access argument upfront to check that one of _READ
or _WRITE access has been requested. In the case that cogl is built
without debug support then we will still detect a bad access argument
later and now explicitly return before marking the bitmap as bound, just
in case the g_assert_not_reach has been somehow disabled. Finally we
defer setting bitmap->bound = TRUE until after we have check for any
error with _cogl_bitmap_gl_bind.

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

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

(cherry picked from commit 1720d5cf32449a189fd9d400cf5e6696cd50a9fa)
2013-03-06 16:44:52 +00:00
Jan Kyselica
bfea34b897 Added Slovak translation 2013-03-06 15:44:07 +00:00
Chun-wei Fan
f0f44793b1 Update Visual Studio property sheets
Some public headers were added, so these need to be "installed" as well.
Also clean up the preprocessor definitions as they were meant to be
in cogl/cogl-defines.h.
2013-03-01 16:00:44 +08:00
Chun-wei Fan
1ddf5e30c1 Fix Cogl Visual Studio Projects
Some GL driver sources were moved and added, so these sources and paths
must be added/changed in the Cogl projects
2013-03-01 15:58:46 +08:00
Neil Roberts
a131b697d9 Add the layer's sampler and uniform declarations at the start
Previously the sampler uniform declarations such as cogl_sampler0 were
generated by walking the list of layers in the shader state. This had
two problems. Firstly it would only generate the declarations for
layers that have been referenced. If a layer has a combine mode of
replace then the samplers from previous layers couldn't be used by
custom snippets. Secondly it meant that the samplers couldn't be
referenced by functions in the declarations sections because the
samplers are declared too late.

This patch fixes it to generate the layer declarations in the backend
start function using all of the layers on the pipeline instead. In
addition it adds the sampler declarations to the vertex shader as they
were previously missing.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 1824df902bbb9995cae6ffb7a413913f2df35eef)

Conflicts:
	cogl/driver/gl/cogl-pipeline-fragend-glsl.c
	cogl/driver/gl/cogl-pipeline-vertend-glsl.c
2013-02-27 15:53:43 +00:00
Neil Roberts
956d39ac30 Add fragment and vertex snippet hooks for global declarations
This adds hook points to add global function and variable declarations
to either the fragment or vertex shader. The declarations can then be
used by subsequent snippets. Only the ‘declarations’ string of the
snippet is used and the code is directly put in the global scope near
the top of the shader.

The reason this is necessary rather than just adding a normal snippet
with the declarations is that for the other hooks Cogl assumes that
the snippets are independent of each other. That means if a snippet
has a replace string then it will assume that it doesn't even need to
generate the code for earlier hooks which means the global
declarations would be lost.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit ebb82d5b0bc30487b7101dc66b769160b40f92ca)
2013-02-27 14:43:55 +00:00
Bastien Nocera
bd1e3e7642 cogl-buffer: Stop warning spam running in sw rendering
/etc/gdm/Xsession[731]: Aviso do gerenciador de janelas: Log level 8:
g_error_free: assertion `error != NULL' failed

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

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 83dbf79986981fac9ec0f2575b7c7cb32f629f0f)
2013-02-25 17:50:18 +00:00
Gheyret Kenji
c7e4110731 Updated Uyghur translation
Signed-off-by: Gheyret Kenji <gheyret@gmail.com>
2013-02-25 18:58:10 +09:00
Tomeu Vizoso
74a749386b Guard cogl-object.h within COGL_BEGIN_DECLS
To avoid linking trouble in C++ stuff

Reviewed-By: Neil Roberts <neil@linux.intel.com>

(cherry picked from commit b194f1bf58055ef1f5075508f19336cae648a0c8)

Conflicts:
	cogl/cogl-object.h
2013-02-22 16:36:38 +01:00
Neil Roberts
6cab431f4c Post-release version bump to 1.13.5 2013-02-21 16:07:53 +00:00
Neil Roberts
72847ad8e2 Release 1.13.4 (snapshot) 2013-02-21 15:45:24 +00:00
Neil Roberts
edbeb3ec64 Updates NEWS for the 1.13.4 release 2013-02-21 15:36:59 +00:00
Neil Roberts
fc86d0e12e win32: Minor build fixes for building for win32
This fixes some minor errors and warnings that were preventing Cogl
building with mingw32:

• cogl-framebuffer-gl.c was not including cogl-texture-private.h.
  Presumably something else ends up including that when building for
  GLX.

• The WGL winsys was not including cogl-error-private.h

• A call to strsplit in the WGL winsys was wrong.

• For some reason the test-wrap-rectangle-textures test was trying to
  include the GDKPixbuf header.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 5380343399f834d9f96ca3b137d49c9c2193900a)
2013-02-21 15:20:55 +00:00
Neil Roberts
1871045b45 mingw: Add --enable-deprecated to the recommended build flags
The version of Pango that the script downloads is using G_CONST_RETURN
in the public headers. This won't build if G_DISABLE_DEPRECATED is
enabled so instead the build script now just recommends to pass
--enable-deprecated to cogl's configure script.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 4715f0f01d4de55a9cf690f52d4da211c243565b)
2013-02-21 15:20:55 +00:00
Neil Roberts
43d3383611 mingw: Update to the latest version of glib.
Cogl now requires at least version 2.32.0 of GLib. There are no
pre-built binaries for this from tml so we have to build glib from
source. This also requires libffi. The binary packages for libffi and
zlib don't install a pc file so the script just manually generates a
fake one.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 9e47972759a5dda4c9e9bf13df3369510be0e324)
2013-02-21 15:20:55 +00:00
Neil Roberts
a0af92fae9 Update to the latest version of the tesselator from GLU
Mesa's libGLU tesselator code has had a commit on it since it was
copied into Cogl. It sounds like it fixes a potential crash so we
should probably have it in Cogl too.

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

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit c6b2429546d3ea0aa91caa47c7c90f932984ea33)
2013-02-20 14:55:44 +00:00
Neil Roberts
d63dfba113 cogl-pango: Add a missing backslash in the Makefile
There was a missing backslash in the LDFLAGS for libcogl-pango2. This
was stopping it having the right library version information and the
library would have the wrong filename.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit cf3d2b3de84d4e1e90b83cf3f69653f38997ef97)
2013-02-20 14:55:44 +00:00
Neil Roberts
29983a7e2c buffer: Don't set the invalidate hint when requesting read access
glMapBufferRange is documented to fail with GL_INVALID_OPERATION if
GL_MAP_INVALIDATE_BUFFER_BIT is set as well as GL_MAP_READ_BIT. I
guess this makes sense when only read access is requested because
there would be no point in reading back uninitialised data. However,
Clutter requests read/write access with the discard hint when
rendering to a CoglBitmap with Cairo. The data is new so the discard
hint makes sense but it also needs read access so that it can read
back the data it just wrote for blending.

This patch works around the GL restriction by skipping the discard
hints if read access is requested. If the buffer discard hint is set
along with read access it will recreate the buffer store as an
alternative way to discard the buffer as it does in the case where the
GL_ARB_map_buffer_range extension is not supported.

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

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 986675d6043e8701f2d65415cf72ffc91734debd)
2013-02-19 15:03:30 +00:00
Neil Roberts
861b119a53 journal: Dirty the modelview matrix state when flushing
The journal manually flushes its own modelview matrix state so it
needs to mark the state as dirty so that if a primitive is drawn with
the same matrix state as the last primitive it will correctly reflush
it.

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

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit c7290c994c742456ff0977cb394c289afb377049)
2013-02-19 11:06:59 +00:00
Neil Roberts
806a2e5813 Add a test to check interleaving primitives and the journal
This adds a conformance test which draws a rectangle using the journal
in-between two rectangles drawn with primitives without changing any
other state. Currently this is failing because the modelview matrix
state is not correctly flushed.

The journal also flushes in own clip state so the test additionally
puts everything in a clip and verifies that that worked. This is not
currently broken but we might as well test it.

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

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit b703f9a1a98894a12021cbdd632e1d59214e612f)
2013-02-19 11:06:59 +00:00
Daniel Martinez
217d13537c Updated Aragonese translation 2013-02-18 21:13:17 +01:00
Piotr Drąg
c0eca175eb Updated Polish translation 2013-02-16 21:23:41 +01:00
Robert Bragg
255b815f76 conform: explicitly check value of boolean env vars
For the boolean environment variables that affect the running of the
conformance tests we now explicitly check the value of those variables
so that "0", "off" and "false" (upper or lower case) will be considered
as FALSE instead of just interpreting set as TRUE and unset as FALSE. If
the value is set to something entirely spurious then we abort with a
warning message. Thanks to Artie Eoff for suggesting this change.

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

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

(cherry picked from commit 25a8cf3607a482ca390eb9841295d1b365cbe53b)
2013-02-15 17:45:03 +00:00
Robert Bragg
7ab54be3b7 avoid redundant idle if using FRAME_SYNC to throttle
This updates the examples and test-journal which now use the _FRAME_SYNC
events to throttle rendering so that they don't install a redundant idle
handler to paint when they get a FRAME_SYNC event and instead they now
directly paint when the event is received.

(cherry picked from commit 579eb75e6ac6f50d7a9cfe5093435126158b3c96)
2013-02-15 17:44:49 +00:00
Robert Bragg
700de0ea8e doc: Add _add/remove_frame_callback api to -sections.txt
This lists the cogl_onscreen_add/remove_frame_callback functions and
CoglFrameClosure and CoglFrameCallback types in cogl2-sections.txt

(cherry picked from commit 6655fee97fb6bcc2a516b710cc8ca1179685cb8f)
2013-02-15 17:44:18 +00:00
Robert Bragg
118303a3d3 cogl-gles2-gears: use new _add_frame_callback api
This updates cogl-gles2-gears to use the new
cogl_onscreen_add_frame_callback() api to use _SYNC events for
throttling.

(cherry picked from commit 4fdb8b966ad3501842bbdff3d96b0c4e098e2646)
2013-02-15 17:43:46 +00:00
Robert Bragg
adfb561258 cogl-gles2-context: use new _add_frame_callback api
This updates cogl-gles2-context to use the new
cogl_onscreen_add_frame_callback() api to use _SYNC events for
throttling.

(cherry picked from commit 2063306645e32ceb3252ebcd2eebd33c879d7fbe)
2013-02-15 17:43:34 +00:00
Robert Bragg
4347f33917 test-journal: use new _add_frame_callback api
This updates test-journal to use the new
cogl_onscreen_add_frame_callback() api to use _SYNC events for
throttling.

(cherry picked from commit 24e6a5376ed3982f5647e2c2df0618272c381636)
2013-02-15 17:43:26 +00:00
Jasper St. Pierre
66c75f9a9d cogl-texture: Make the list of registered types global, not per-context
If we make this per-context and create two Cogl contexts, some types
won't re-register, and we'll be in a broken state where some types will
be considered not to be texture types.

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

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

(cherry picked from commit 567f049d20554bb8ea4e40fa5e72a9fd0bbd409e)
2013-02-13 18:47:16 +00:00
Jasper St. Pierre
a60f16116d cogl-context: Remove the unused buffer_types variable
https://bugzilla.gnome.org/show_bug.cgi?id=693696

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2013-02-13 18:46:51 +00:00
Neil Roberts
f79e78f648 Don't #ifdef the call to glDiscardFramebuffer
When Cogl is compiled with support for both the GL and GLES drivers it
only includes the GL header and not the GLES header. That means in
that case it would not compile in the code for the
GL_EXT_discard_framebuffer extension even though it could be used on
the GLES driver. This patch makes it use the standard names for the
GL_COLOR, GL_STENCIL etc names instead of the _EXT suffixed names and
manually defines them if we are using the GLES headers. That way the
discard code can be used unconditionally.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 59c30292d0f3c28d6e0e08bc5bf3b4b10545d856)
2013-02-13 12:05:26 +00:00
Neil Roberts
7d9e075917 Bind the framebuffer before calling glDiscardFramebuffer
This patch just adds a call to _cogl_framebuffer_flush_state to ensure
the correct framebuffer is bound before discarding its buffers.
Previously it would presumably just discard the buffers of whatever
framebuffer happened to be used last.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 37c390a5b33d4f65ff6c834e9be2f8de716635ee)
2013-02-13 12:05:22 +00:00
Neil Roberts
0494e70955 test-gles2-context: Read pixels using GL_RGBA not GL_RGB
The GLES2 spec only guarantees calling glReadPixels with GL_RGBA and
an implementation specific format. Mesa seems to now reject reading
with GL_RGB so the test had started failing. This fixes it to just
read using GL_RGBA.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 745cbcbdee0f5b4df4c6a735b03709248a551884)
2013-02-08 12:20:33 +00:00
Neil Roberts
d6dacf2f65 test-gles2-context: Use test_utils_compare_pixel instead of g_asserts
test_utils_compare_pixel makes the error report slightly easier to
read because it displays the values for the whole pixel instead of
reporting that there was a difference somewhere.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit a094ac9688a5e6b53be1cd379dc045973aab2fae)
2013-02-08 12:20:33 +00:00