# Generated by configure. Do not edit. spec=split.. commit 5b0661ccd550efef46b529c67cb87cfbfb88cd40 Author: Robert Bragg Date: Mon Jun 13 11:03:04 2011 +0100 Release 1.7.0 (snapshot) configure.ac | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 4c0f8136083b33ef97d980c08f7a363a02ed4246 Author: Robert Bragg Date: Tue Jun 14 13:38:48 2011 +0100 README: Updates in preparation for 1.7.0 release README.in | 104 +++++++++++++++++++++++++++++++++--------------------------- 1 files changed, 57 insertions(+), 47 deletions(-) commit 5f3173e2d10c88d2a91aab43f808fbba5aae8499 Author: Robert Bragg Date: Fri Jun 10 11:58:27 2011 +0100 Adds NEWS in preparation for 1.7.0 release NEWS | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 57 insertions(+), 0 deletions(-) commit ec62acfd6a6c96a71a193264d487129e45cef564 Author: Robert Bragg Date: Tue Jun 14 15:08:17 2011 +0100 configure: pass tar-ustar as automake init option So that our released tarballs can contain filenames longer than 99 characters we tell automake to create tarballs using the ustar format. This is newer than the default v7 format but still old enough to be considered widely portable. configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 5a6fbf7e5240c467a7192cd7b626249a9743edc7 Author: Robert Bragg Date: Tue Jun 14 14:52:08 2011 +0100 Ensure we use --enable-profile during make distcheck Makefile.am | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 0e5df1776109c1c532f3959ba8882161b5192c8f Author: Robert Bragg Date: Tue Jun 14 16:07:43 2011 +0100 doc: Fix EXTRA_DIST variable setup Since gtk-doc is an optional dependency for Cogl then we need to special case how EXTRA_DIST is initialized. It shouldn't be set when using gtk-doc since gtk-doc.make expects to initialize EXTRA_DIST. If we aren't using gtk-doc then it should be initialized to an empty value instead of including gtk-doc.make so that the later lines that append various extra png files to EXTRA_DIST won't fail. doc/reference/cogl-2.0-experimental/Makefile.am | 10 +++------- doc/reference/cogl/Makefile.am | 10 +++------- 2 files changed, 6 insertions(+), 14 deletions(-) commit 57d76e315fef5acdca641b8dd0f64e6d411471e5 Author: Robert Bragg Date: Mon Jun 13 12:42:25 2011 +0100 Fixes for make distcheck cogl/Makefile.am | 4 +++- cogl/cogl-context.c | 2 +- configure.ac | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) commit 036c5bf572a3474f7d334b3f97cc2b6dee2c3537 Author: Robert Bragg Date: Mon Jun 13 18:52:20 2011 +0100 include required cogl-context.h in cogl-texture-2d.h cogl/cogl-texture-2d.h | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 7a0a4de69154a281947b7b4103ea214572960843 Author: Robert Bragg Date: Mon Jun 13 18:51:33 2011 +0100 Fix some gtk-doc annotations in cogl-depth-state.h cogl/cogl-depth-state.h | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit 6396006bb8429de3e2bbacdf7210bb67989d9bc9 Author: Robert Bragg Date: Mon Jun 13 11:37:28 2011 +0100 doc: Adds doc/RELEASING This adds some notes for maintainers about how to make a Cogl release. doc/RELEASING | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 86 insertions(+), 0 deletions(-) commit 800f5e6d6e864bc6f120416927d30f6f5adda9ff Author: Robert Bragg Date: Mon Jun 13 10:30:49 2011 +0100 profile: Adds a --enable-profile option This adds a --enable-profile option which enables uprof based profiling. It was also necessary to fixup a CLUTTER_ENABLE_PROFILING #ifdef in cogl-context.c to renamed COGL_ENABLE_PROFILING instead. By default Cogl doesn't output uprof reports directly, instead it assumes a higher level toolkit will output a report. If you want a report from Cogl you can export COGL_PROFILE_OUTPUT_REPORT=1 before running your app. The latest version of uprof can be fetched from: git://github.com/rib/UProf.git cogl/Makefile.am | 2 +- cogl/cogl-context.c | 2 +- configure.ac | 24 ++++++++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) commit 44e4b13324d9ae7e462e071ebf28ae4d29cb4606 Author: Robert Bragg Date: Mon Jun 13 10:29:05 2011 +0100 x11-foreign: Updates to forward X Events to Cogl This update the x11-foreign test so that it checks for events on its X display and forwards them on to Cogl. It will now also quit if any key of button is pressed. examples/x11-foreign.c | 37 ++++++++++++++++++++++++++++++++++--- 1 files changed, 34 insertions(+), 3 deletions(-) commit 3729bf27697308142dbadcb9eea1b1d59b28e65d Author: Robert Bragg Date: Fri Jun 10 18:47:12 2011 +0100 Make it clearer that the 2.0 API is experimental This explicitly renames the cogl-2.0 reference manual to cogl-2.0-experimental and renames the cogl-2.0 pkg-config file to cogl-2.0-experimental.pc. Hopefully this should avoid miss-understandings. .gitignore | 26 +- build/autotools/Makefile.am.release | 8 +- cogl-pango/Makefile.am | 2 +- cogl-pango/cogl-pango-2.0-experimental.pc.in | 13 + cogl/Makefile.am | 2 +- cogl/cogl-2.0-experimental.pc.in | 13 + cogl/cogl.pc.in | 13 - configure.ac | 8 +- doc/reference/Makefile.am | 2 +- doc/reference/cogl-2.0-experimental/Makefile.am | 158 ++++++ .../cogl-2.0-experimental/blend-strings.xml | 129 +++++ .../cogl-2.0-experimental/cogl-docs.xml.in | 196 +++++++ .../cogl-2.0-experimental/cogl-sections.txt | 537 ++++++++++++++++++++ doc/reference/cogl-2.0-experimental/cogl_ortho.png | Bin 0 -> 12650 bytes .../cogl-2.0-experimental/fill-rule-even-odd.png | Bin 0 -> 3121 bytes .../cogl-2.0-experimental/fill-rule-non-zero.png | Bin 0 -> 3143 bytes .../cogl-2.0-experimental/quad-indices-order.png | Bin 0 -> 2620 bytes .../quad-indices-triangles.png | Bin 0 -> 8018 bytes doc/reference/cogl-2.0/Makefile.am | 158 ------ doc/reference/cogl-2.0/blend-strings.xml | 129 ----- doc/reference/cogl-2.0/cogl-docs.xml.in | 196 ------- doc/reference/cogl-2.0/cogl-sections.txt | 537 -------------------- doc/reference/cogl-2.0/cogl_ortho.png | Bin 12650 -> 0 bytes doc/reference/cogl-2.0/fill-rule-even-odd.png | Bin 3121 -> 0 bytes doc/reference/cogl-2.0/fill-rule-non-zero.png | Bin 3143 -> 0 bytes doc/reference/cogl-2.0/quad-indices-order.png | Bin 2620 -> 0 bytes doc/reference/cogl-2.0/quad-indices-triangles.png | Bin 8018 -> 0 bytes 27 files changed, 1071 insertions(+), 1056 deletions(-) commit 250373a0f1a6c305932c178dbd604d95c358089f Author: Robert Bragg Date: Wed Jun 8 14:34:00 2011 +0100 Adds build/autotools/Makefile.am.changelog/release This adds some convenience rules to help manage releases Makefile.am | 8 ++ build/autotools/Makefile.am.changelog | 78 ++++++++++++++++ build/autotools/Makefile.am.release | 156 +++++++++++++++++++++++++++++++++ 3 files changed, 242 insertions(+), 0 deletions(-) commit a9643f38e6b874348155867b412fe3a75e794360 Author: Robert Bragg Date: Wed Jun 8 11:52:15 2011 +0100 x11-foreign: explicitly pass -lX11 ldflag The x11-foreign example directly uses the X11 API at it seems that more recent versions of binutils complain if we don't directly link the test with libX11 as opposed to relying on indirect linkage via cogl. examples/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit e86543cd7d1db7fe1d88b6875a8662e377c9e9df Author: Neil Roberts Date: Tue Jun 14 14:40:27 2011 +0100 Revert "Do not use "near" and "far" variables" This reverts commit 3d2564df8f71d6030d9496b7f8e57a27905a4b5a. Since 01e1260aa the 'near' and 'far' defines are now undef'd on Windows so we no longer have to remember not to use them in Cogl code. cogl/cogl-depth-state.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 01e1260aa0a659776961e7ade5eab571374d2a6a Author: Neil Roberts Date: Mon Jun 13 13:09:47 2011 +0100 configure: Force #undef of 'near' and 'far' on Windows This adds an extra header that gets included from config.h where we can add configuration defines. This is used to #undef 'near' and 'far' when building for Windows so that we don't have to avoid using them as variable names in the Cogl code. Makefile.am | 4 +++- config-custom.h | 35 +++++++++++++++++++++++++++++++++++ configure.ac | 1 + 3 files changed, 39 insertions(+), 1 deletions(-) commit 5dc42284a5174d6cb451d0f5956801e67da3e627 Author: Lionel Landwerlin Date: Fri Jun 10 18:44:09 2011 +0100 cogl-debug: add instrumentation to track the number of objects This allows to track the number of objects allocated by Cogl. The results are displayed on the standard output by calling : cogl_debug_print_instances (); Signed-off-by: Lionel Landwerlin Signed-off-by: Neil Roberts cogl/cogl-debug.c | 1 + cogl/cogl-debug.h | 1 + cogl/cogl-object-private.h | 123 ++++++++++++++++++++++++++++---------------- cogl/cogl-object.c | 32 +++++++++++ cogl/cogl-object.h | 73 ++++++++++++++++++++++++++ 5 files changed, 185 insertions(+), 45 deletions(-) commit c603dc67ca13d26e3909196500da693a92654dee Author: Robert Bragg Date: Wed Jun 8 17:52:28 2011 +0100 cogl-vertex-buffer: make sure to unref weak pipelines When validating a user pipeline before drawing with a CoglVertexBuffer we sometimes find we have to make some overrides and we handle that by creating a pipeline which is a weak copy of the user pipeline. The weak pipeline gets associated with the original pipeline so if that pipeline is used multiple times then we can re-use the same override pipeline and skip validation. Because it's a weak pipeline we get notified when the original material is destroyed or changed so we know our weak pipeline is now invalid. When we get notified that the weak material is invalid we should unref it, but instead we were just discarding our reference to it. This was resulting in leaking weak materials and in some cases those materials referenced textures which would then also be leaked. cogl/cogl-vertex-buffer.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 3d2564df8f71d6030d9496b7f8e57a27905a4b5a Author: Emmanuele Bassi Date: Sun Jun 12 10:40:20 2011 +0100 Do not use "near" and "far" variables They collide with existing symbols when compiling on Windows. http://bugzilla.clutter-project.org/show_bug.cgi?id=2667 cogl/cogl-depth-state.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 6d1371e0e9291a10404a34992322ed698333f738 Author: Neil Roberts Date: Fri Jun 10 18:43:56 2011 +0100 cogl-texture-pixmap-x11: Fix the can_hardware_repeat wrapper The wrapper for the can_hardware_repeat had a cut and paste error so it would call the wrong function on the child texture. Many thanks to Owen Taylor for finding this bug. cogl/winsys/cogl-texture-pixmap-x11.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit db954565d4e9ffeb848a1b1554f1ed568a29b55f Author: Neil Roberts Date: Fri Jun 10 14:03:50 2011 +0100 cogl-pango-render: Use the glyph size for unknown glyphs When rendering a box for an unknown glyph it would previously just use the average glyph size for the font. This causes problems because the size calculations for the layout assume a different size so it can end up rendering outside of the expected ink rectangle. This patch changes it to query the size of the glyph in the font. Pango should end up reporting the size of what would be the hex box which should be the same as the sized used for the extents calculation. http://bugzilla.clutter-project.org/show_bug.cgi?id=2599 cogl-pango/cogl-pango-render.c | 21 ++++++++++----------- 1 files changed, 10 insertions(+), 11 deletions(-) commit abb3631e71c47e8491e036bc5fbe5b7ed960e7a4 Author: Emmanuele Bassi Date: Thu Jun 9 16:23:58 2011 +0100 po: Fix up pl.po po/pl.po | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) commit 552761f3a83f13d00aa00f4925661463388f48e8 Author: Emmanuele Bassi Date: Thu Jun 9 16:21:15 2011 +0100 Remove G_CONST_RETURN It is going to be deprecated by GLib, see bug: https://bugzilla.gnome.org/show_bug.cgi?id=644611 cogl/cogl-material-compat.c | 2 +- cogl/cogl-material-compat.h | 2 +- cogl/cogl-matrix.h | 2 +- cogl/cogl-pipeline-private.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) commit c56d5436d08cb55b529f00dbb29a2b3b44db2692 Author: Emmanuele Bassi Date: Thu Jun 9 16:19:44 2011 +0100 Fix introspection annotations for CoglPango cogl-pango/cogl-pango-fontmap.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit c3c080481952b33737bea0b5b1c62b6d3b5763f5 Author: Neil Roberts Date: Wed Jun 8 18:03:58 2011 +0100 Implement COGL_DEBUG=disable-texturing for ARBFp and GLSL fragends The COGL_DEBUG=disable-texturing debug variable disables texturing in the fixed function fragend by not bothering to enable the texture targets. This wasn't working for the programmable fragends because the texture targets don't need to be enabled to use them. This patch modifies the two programmable backends to generate a constant value for the texture lookups in the shader when the debug variable is given. cogl/cogl-pipeline-fragend-arbfp.c | 25 ++++++++++++++++--------- cogl/cogl-pipeline-fragend-glsl.c | 9 +++++++++ 2 files changed, 25 insertions(+), 9 deletions(-) commit bbfe8b8ec445bda7832e13f495e31ac0ca93aca1 Author: Robert Bragg Date: Wed Jun 1 18:49:18 2011 +0100 gir: pass dep cflags to gobject introspection scanner The gobject introspection scanner was failing to find EGL headers so we now pass the COGL_DEP_CFLAGS to Cogl_1_0_gir_CFLAGS. cogl/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 5022ec54d2dfea28d5b4edbe0183cd6312035f93 Author: Robert Bragg Date: Fri May 27 12:30:23 2011 +0100 replace _xlib_add_filter use with _cogl_renderer API Instead of using _cogl_xlib_add/remove_filter we now use _cogl_renderer_add/remove_native_filter. The _cogl_xlib_add_filter API was only required as a stop gap while EGL support was still in Clutter because in that case we were using the stub winsys and didn't have a CoglRenderer. cogl/cogl-renderer.h | 6 +++--- cogl/cogl-xlib-private.h | 21 --------------------- cogl/cogl-xlib.c | 18 ------------------ cogl/winsys/cogl-texture-pixmap-x11.c | 20 ++++++++++++++------ 4 files changed, 17 insertions(+), 48 deletions(-) commit 8c35a6bb7c1a52d5be3950365f4ffa5e25debfc1 Author: Robert Bragg Date: Wed May 25 22:23:06 2011 +0100 remove _cogl_xlib_trap/untrap_errors wrappers This removes the redundant _cogl_xlib_trap/untrap_errors functions that simply wrap equivalent functions in the _cogl_renderer_xlib namespace. These were originally only required while the EGL winsys was being handled in clutter and so there wasn't a CoglRenderer in all cases. cogl/cogl-renderer-xlib-private.h | 17 +++++++++-------- cogl/cogl-xlib-private.h | 6 ------ cogl/cogl-xlib.c | 17 ----------------- cogl/winsys/cogl-winsys-egl.c | 5 +++-- cogl/winsys/cogl-winsys-glx.c | 11 ++++++----- 5 files changed, 18 insertions(+), 38 deletions(-) commit 43c4b21a1dc161d60796f701f817a6e0b122bfc6 Author: Robert Bragg Date: Wed May 25 19:27:10 2011 +0100 Adds an example cogl wayland compositor This adds an example cogl compositor to test the _cogl_wayland_texture_2d_new_from_buffer API. The compositor emulates 4 output displays but doesn't support input since Cogl doesn't deal with input. It's quite a minimal example of what it takes to write a wayland compositor so could be interesting to anyone learning about wayland. examples/Makefile.am | 6 + examples/cogland.c | 543 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 549 insertions(+), 0 deletions(-) commit 4a97fc0a1e8ab4a59bb907d4a212d2bab285fb4a Author: Robert Bragg Date: Wed May 25 01:57:20 2011 +0100 egl: fix some #ifdef guards In the winsys vtable .xlib_get_visual_info and .onscreen_x11_get_window_xid should be guarded by the COGL_HAS_EGL_PLATFORM_POWERVR_X11_SUPPORT because they need to be there if cogl is configured with --enable-xlib-egl-platform but not if just configured with --enable-xlib. cogl/winsys/cogl-winsys-egl.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit b934859dde06f0e01d0089e8ba242e3fedf02028 Author: Robert Bragg Date: Wed May 25 01:49:44 2011 +0100 renderer: set winsys on renderer before ->renderer_connect When iterating through all the possible window systems trying to find one we can successfully connect we now associated the current winsys vtable with the renderer before calling winsys->renderer_connect in case the implementation calls some other Cogl API that expects to be able to determine the current winsys. For example calling _cogl_get_proc_address when querying winsys extensions as part of a successful connect will need to get at the current winsys vtable. cogl/cogl-renderer.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) commit 656f28de2f657ab4ca9a6c933d7fbd15671e4ea9 Author: Robert Bragg Date: Wed May 25 01:47:34 2011 +0100 glx: make sure _cogl_winsys_get_proc_address is static Make sure not to export _cogl_winsys_get_proc_address outside of cogl-winsys-glx.c cogl/winsys/cogl-winsys-glx.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit a29a76dbabf8e68febc50288465fccdfd8d1313f Author: Robert Bragg Date: Wed May 25 01:37:56 2011 +0100 Adds _cogl_wayland_texture_2d_new_from_buffer API This adds internal API to be able to wrap a wayland buffer as a CoglTexture2D. There is a --enable-wayland-egl-server option to decide if Cogl should support this feature and potentially any EGL based winsys could support this through the EGL_KHR_image_base and EGL_WL_bind_display extensions. cogl/cogl-display-private.h | 7 ++ cogl/cogl-display.c | 10 +++ cogl/cogl-display.h | 6 ++ cogl/cogl-internal.h | 5 +- cogl/cogl-texture-2d.c | 69 +++++++++++++++++++++++ cogl/cogl-texture-2d.h | 35 ++++++++++++ cogl/winsys/cogl-winsys-egl-feature-functions.h | 11 ++++ cogl/winsys/cogl-winsys-egl.c | 12 ++++ configure.ac | 16 +++++ 9 files changed, 169 insertions(+), 2 deletions(-) commit 8714d99300ff6da1fba7959278b321f5eea94844 Author: Robert Bragg Date: Tue May 24 23:15:37 2011 +0100 egl: Add x11 texture-from-pixmap support By using the EGL_KHR_image_base/pixmap extensions this adds support for wrapping X11 pixmaps as CoglTexture2D textures. Clutter will automatically take advantage of this if using the ClutterX11TexturePixmap actor. cogl/cogl-internal.h | 3 +- cogl/winsys/cogl-winsys-egl-feature-functions.h | 5 + cogl/winsys/cogl-winsys-egl.c | 127 +++++++++++++++++++++++ 3 files changed, 134 insertions(+), 1 deletions(-) commit 60b25615fd76716d99998bf6755a246c3ea495e6 Author: Robert Bragg Date: Tue May 24 22:34:10 2011 +0100 Add _cogl_egl_texture_2d_new_from_image API This adds an internal texture_2d constructor that can wrap an EGLImage as a CoglTexture2D. The plan is to utilize this for texture-from-pixmap support with EGL as well as creating textures from wayland buffers. cogl/Makefile.am | 15 +++++-- cogl/cogl-context-private.h | 1 + cogl/cogl-context.c | 1 + cogl/cogl-defines.h.in | 3 + cogl/cogl-internal.h | 5 ++ cogl/cogl-renderer.c | 4 +- cogl/cogl-texture-2d-private.h | 13 ++++++ cogl/cogl-texture-2d.c | 48 +++++++++++++++++++++++ cogl/cogl-texture.h | 3 +- cogl/driver/gl/cogl-feature-functions-gl.h | 12 ++++++ cogl/driver/gl/cogl-gl.c | 7 +++- cogl/driver/gles/cogl-feature-functions-gles.h | 12 ++++++ cogl/driver/gles/cogl-gles.c | 7 +++- cogl/winsys/cogl-winsys-egl-feature-functions.h | 17 ++++++++ cogl/winsys/cogl-winsys-egl-private.h | 46 ++++++++++++++++++++++ cogl/winsys/cogl-winsys-egl.c | 31 +++++++++++++++ 16 files changed, 214 insertions(+), 11 deletions(-) commit c9f1541de008cea64dd61f3bfd37451c47e55408 Author: Robert Bragg Date: Tue May 24 21:33:22 2011 +0100 egl: check or EGL/eglext.h While running configure we now check for EGL/eglext.h and if found we will substitute an inclusion in cogl-defines.h. cogl/cogl-defines.h.in | 7 +------ configure.ac | 24 +++++++++++++++++------- 2 files changed, 18 insertions(+), 13 deletions(-) commit 52aada844283aa64136e15ab2682d5cfe44ffa4a Author: Robert Bragg Date: Tue May 24 17:21:28 2011 +0100 egl: Check EGL extension as early as possible Instead of waiting until initializing a CoglContext we now check EGL extensions after calling eglInitialize. cogl/cogl-feature-private.h | 5 +- cogl/winsys/cogl-winsys-egl-feature-functions.h | 8 +-- cogl/winsys/cogl-winsys-egl.c | 73 ++++++++++++++--------- 3 files changed, 49 insertions(+), 37 deletions(-) commit be15bf75e44bcab213e840f26b0347f6eb50f393 Author: Robert Bragg Date: Tue May 24 01:38:48 2011 +0100 Add internal _cogl_get_proc_address This adds an internal _cogl_get_proc_address that doesn't need a CoglContext. This will enable us to check driver features earlier. cogl/cogl-feature-private.c | 35 ++++++++++++++++------------------- cogl/cogl-feature-private.h | 3 ++- cogl/cogl.c | 22 +--------------------- cogl/driver/gl/cogl-gl.c | 19 ++----------------- cogl/driver/gles/cogl-gles.c | 19 ++----------------- cogl/winsys/cogl-winsys-egl.c | 21 ++------------------- cogl/winsys/cogl-winsys-glx.c | 21 ++------------------- cogl/winsys/cogl-winsys-private.h | 4 ++++ cogl/winsys/cogl-winsys-wgl.c | 3 ++- cogl/winsys/cogl-winsys.c | 31 +++++++++++++++++++++++++++++++ 10 files changed, 64 insertions(+), 114 deletions(-) commit 32e7c93aff3d1b396bd7c63008212acd63e9eb94 Author: Robert Bragg Date: Fri May 27 13:59:29 2011 +0100 configure.ac: move the --enable-cairo check This moves the --enable-cairo check because it was put in the middle of the logic that handles the --enable-debug option. This moves the --enable-cairo check down after the --enable-debug logic and adds a comment header to delimit the option like we have for other options. configure.ac | 46 ++++++++++++++++++++++++++-------------------- 1 files changed, 26 insertions(+), 20 deletions(-) commit b380fed23d61688d1ea199ac28ff4bfba0a32985 Author: Robert Bragg Date: Tue May 17 15:00:38 2011 +0100 Make stub winsys into a proper winsys backend Instead of the stub winsys being a special case set of #ifdef'd code used when COGL_HAS_FULL_WINSYS wasn't defined, the stub winsys now implements a CoglWinsysVtable like all other winsys backends (it's just that everything is a NOP). This way we can get rid of the COGL_HAS_FULL_WINSYS define and also the stub winsys can be runtime selected whereas before it was incompatible with all other winsys backends. cogl/Makefile.am | 5 +- cogl/cogl-clutter.c | 3 +- cogl/cogl-context-private.h | 1 - cogl/cogl-context.c | 19 +---- cogl/cogl-display.c | 4 - cogl/cogl-framebuffer.c | 2 - cogl/cogl-renderer.c | 18 +---- cogl/cogl.c | 4 - cogl/winsys/cogl-winsys-stub-private.h | 30 +++++++ cogl/winsys/cogl-winsys-stub.c | 137 +++++++++++++++++++++----------- configure.ac | 40 --------- 11 files changed, 130 insertions(+), 133 deletions(-) commit 1ec852551013c556d7edcdea92cfc33627900662 Author: Robert Bragg Date: Fri May 27 13:48:55 2011 +0100 cogl-xlib: remove special cases for stub winsys Since we no longer have any xlib based backends in Clutter that depend on the stub winsys in Cogl we can now remove all the special case code we had for this in cogl-xlib.c cogl/cogl-xlib.c | 57 ++++++----------------------------------------------- 1 files changed, 7 insertions(+), 50 deletions(-) commit ee7cc9e7889498c7ed3574b85e7294fff1bb45b1 Author: Robert Bragg Date: Tue May 17 00:05:54 2011 +0100 Make CoglTexture2D public as experimental API This exposes a CoglTexture2D typedef and adds the following experimental API: cogl_is_texture_2d cogl_texture_2d_new_with_size cogl_texture_2d_new_from_data cogl_texture_2d_new_from_foreign Since this is experimental API you need to define COGL_ENABLE_EXPERIMENTAL_API before including cogl.h. Note: With these new entrypoints we now expect a CoglContext pointer to be passed in, instead of assuming there is a default context. The aim is that for Cogl 2.0 we won't have a default context so this is a step in that direction. cogl/Makefile.am | 1 + cogl/cogl-atlas.c | 12 ++- cogl/cogl-blit.c | 2 +- cogl/cogl-texture-2d-private.h | 22 +---- cogl/cogl-texture-2d-sliced.c | 12 ++- cogl/cogl-texture-2d.c | 96 ++++++++++++++---- cogl/cogl-texture-2d.h | 184 ++++++++++++++++++++++++++++++++++ cogl/cogl-texture.c | 28 ++++- cogl/cogl-texture.h | 27 +++++ cogl/cogl.h | 1 + cogl/winsys/cogl-winsys-glx.c | 9 +- doc/reference/cogl/cogl-sections.txt | 10 ++ 12 files changed, 348 insertions(+), 56 deletions(-) commit 80e7e0ef49dfc4b9143a9191d8f862055b5b9998 Author: Robert Bragg Date: Wed Jun 1 14:30:09 2011 +0100 configure: remove the --enable-quartz option Until we have a standalone quartz winsys we don't want to define a winsys name called "quartz" which is what the current --enable-quartz option does. For now anyone building for OSX needs to use the stub winsys and setup their own GL context. configure.ac | 23 ----------------------- 1 files changed, 0 insertions(+), 23 deletions(-) commit 1e3f4f62e090ae0e93f18c7e45febeacbde20dc1 Author: Robert Bragg Date: Fri May 27 12:21:26 2011 +0100 framebuffer: validate width/height in _set_viewport This validates that the viewport width and height arguments are positive values in _cogl_framebuffer_set_viewport. In addition, just before calling glViewport we also assert that something else hasn't gone amiss and that the internal viewport width/height values we track are still positive before passing to glViewport which generates an error for negative values. cogl/cogl-framebuffer.c | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-) commit 5a9b92a4a5f02f08661c8d241a41d82395745ab8 Author: Robert Bragg Date: Wed Jun 1 13:45:42 2011 +0100 Revert "Initial build of a Quartz winsys stub" This reverts commit b2e41f1bfa53fe316bd42228fa26fc1d6dab5e9e. We are backing out the quartz specific stub winsys since we can simply use the generic stub winsys on quartz until we develop a standalone winsys. Since we plan on removing all special cases for the stub winsys by handling with a winsys vtable like all the others it's better if we don't introduce a quartz specific stub. cogl/Makefile.am | 10 ---- cogl/winsys/cogl-winsys-quartz.c | 112 -------------------------------------- 2 files changed, 0 insertions(+), 122 deletions(-) commit 891a9c33c581ff9c66da792fbe61b4fbcdb50f7b Author: Robert Bragg Date: Wed Jun 1 13:42:35 2011 +0100 Revert "quartz: Remove X11 ifdefs" This reverts commit eb81ec945c073bc87dc622d8b27906270953df8b. We are backing out the quartz specific stub winsys since we can simply use the generic stub winsys on quartz until we develop a standalone winsys. Since we plan on removing all special cases for the stub winsys by handling with a winsys vtable like all the others it's better if we don't introduce a quartz specific stub. cogl/winsys/cogl-winsys-quartz.c | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) commit cb321e0e5f13cd0535f1a8260ae2ca6aafb0d26e Author: Emmanuele Bassi Date: Wed Jun 1 16:44:57 2011 +0100 build: Don't use bash string substitution in configure.ac Use the shell-neutral version. https://bugzilla.gnome.org/show_bug.cgi?id=651256 configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit efadc439a46206252c279a1cef72cdaab673107c Author: Neil Roberts Date: Wed Jun 1 14:30:45 2011 +0100 cogl-journal: Use a pool of vertex arrays Previously whenever the journal is flushed a new vertex array would be created to contain the vertices. To avoid the overhead of reallocating a buffer every time, this patch makes it use a pool of 8 buffers which are cycled in turn. The buffers are never destroyed but instead the data is replaced. The journal should only ever be using one buffer at a time but we cache more than one buffer anyway in case the GL driver is internally using the buffer in which case mapping the buffer may cause it to create a new buffer anyway. cogl/cogl-journal-private.h | 12 +++++++++ cogl/cogl-journal.c | 58 +++++++++++++++++++++++++++++++++++++----- 2 files changed, 63 insertions(+), 7 deletions(-) commit 54f94a0ed07e2d01e719f21120cb92ea3e492269 Author: Neil Roberts Date: Tue May 24 16:37:11 2011 +0100 cogl-pipeline-fragend-fixed: Fix enabling texture targets When flushing a pipeline that has more layers than the previous pipeline, the fixed function fragend is supposed to detect that the texture unit previously had no texture target enabled and then enable it. However the logic for checking whether the unit was enabled was broken due to a typing failure when unit->enabled and unit->current_gl_target were combined into one value in commit 6b7139b0. This was breaking some of the conformance tests when the fixed function fragend is used. https://bugzilla.gnome.org/show_bug.cgi?id=650979 cogl/cogl-pipeline-fragend-fixed.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit d8df30cb9cf818bba9c6f65090fc6722c3ddc418 Author: Neil Roberts Date: Tue May 24 13:23:13 2011 +0100 cogl-pipeline-opengl: Don't use number of tex units on fixed-function The CoglPipeline code uses a combination of GL_MAX_TEXTURE_COORDS, GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS and GL_MAX_TEXTURE_UNITS to determine the maximum number of layers to allow in a pipeline. However on fixed function hardware that doesn't advertise either GLSL or ARBfp it was still using the first two enums which will probably just return 0 and set a GLerror. This meant that we effectively didn't support using any layers on purely fixed function hardware. This patch changes it to only use those two enums if the appropriate extensions are advertised and to always use GL_MAX_TEXTURE_UNITS except on GLES2 where there is no fixed function. https://bugzilla.gnome.org/show_bug.cgi?id=650966 cogl/cogl-pipeline-opengl.c | 69 +++++++++++++++++++++++++++++++------------ 1 files changed, 50 insertions(+), 19 deletions(-) commit 19e1dcff23fd925240d40c2cf0ed555a6388d244 Author: Emmanuele Bassi Date: Wed May 25 16:49:09 2011 +0100 framebuffer: Bail out if the viewport has negative size cogl/cogl-framebuffer.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit eb81ec945c073bc87dc622d8b27906270953df8b Author: Emmanuele Bassi Date: Wed May 25 16:47:38 2011 +0100 quartz: Remove X11 ifdefs cogl/winsys/cogl-winsys-quartz.c | 18 ------------------ 1 files changed, 0 insertions(+), 18 deletions(-) commit b2e41f1bfa53fe316bd42228fa26fc1d6dab5e9e Author: Emmanuele Bassi Date: Tue May 24 22:59:58 2011 +0100 Initial build of a Quartz winsys stub cogl/Makefile.am | 10 ++++ cogl/winsys/cogl-winsys-quartz.c | 112 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 122 insertions(+), 0 deletions(-) commit df688ad0c8774f87bb82618c01c0e508642d87ec Author: Emmanuele Bassi Date: Tue May 24 22:29:42 2011 +0100 build: Fix platform detection for Quartz/OSX The location of the header files for GL and the linker flags are different on Mac OS X than other Unices. configure.ac | 38 +++++++++++++++++++++++++++++++++++--- 1 files changed, 35 insertions(+), 3 deletions(-) commit 97abcda1a2771df13228da92dc6b975088d86bd6 Author: Damien Lespiau Date: Wed May 18 14:14:28 2011 +0100 build: Fix generation of the documentation Makefiles Automake seems a bit fragile when trying to do cunning things like including a file with "-include". It does not recurse into that file (if it exists) to generate the final Makefiles. Let's add a if BUILD_GTK_DOC guard around the gtk-doc.make inclusion instead, hopefully should work as intended. doc/reference/cogl-2.0/Makefile.am | 4 +++- doc/reference/cogl/Makefile.am | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) commit 57db73873eb210f4ec51ae71852f533bc5640e68 Author: Emmanuele Bassi Date: Wed May 18 11:50:56 2011 +0100 pipeline: Fix argument checking in set_depth_state() cogl/cogl-pipeline.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 8680e3bfeb8d064ce898e8fb07853c199b87e836 Author: Damien Lespiau Date: Tue May 17 15:06:53 2011 +0100 android: Expose the only android specific symbol as experimental cogl/cogl-context.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 8e949ff5606d4eb5a2f0c1658dca60b816203a05 Author: Damien Lespiau Date: Mon May 16 18:08:49 2011 +0100 build: Allow to forcefully disable the usage cairo Provide an option to disable cairo usage in the debugging code even if we find the pc file. configure.ac | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-) commit e157971cd887a367746fa210077325befc03795a Author: Damien Lespiau Date: Mon May 16 17:50:49 2011 +0100 debug: Allow to compile a debug Cogl without cairo For people still wanting the debugging code, but don't have or don't want to compile cairo for their platform. cogl/cogl-rectangle-map.c | 12 ++++++++---- configure.ac | 10 +++++++++- 2 files changed, 17 insertions(+), 5 deletions(-) commit aa27ec56df51f9ce72769d69af44b4f833927b5d Author: Damien Lespiau Date: Mon May 16 17:26:05 2011 +0100 android: Add a port of the Cogl hello world example examples/android/hello/.gitignore | 8 + examples/android/hello/AndroidManifest.xml | 30 ++++ examples/android/hello/jni/Android.mk | 19 +++ examples/android/hello/jni/Application.mk | 1 + examples/android/hello/jni/main.c | 188 +++++++++++++++++++++++++ examples/android/hello/res/values/strings.xml | 4 + 6 files changed, 250 insertions(+), 0 deletions(-) commit f4365821148f1885ca2bbecedbf0270aa5af3edf Author: Damien Lespiau Date: Mon May 16 16:43:30 2011 +0100 android: Add support for an EGL/Android winsys The native window type of the EGL/Android winsys is ANativeWinow*. The Android NDK gives you a pointer to this ANativeWindow and you just need to configure that window using the EGLConfig you are choosing when creating the context. This means you have to know the ANativeWindow* window before creating the context. This is solved here by just having a global variable you can set with cogl_android_set_native_window() before creating the context. This is a bit ugly though, and it conceptually belongs to the OnScreen creation to know which ANativeWindow* to use. This would need a "lazy context creation" mechanism, waiting for the user to create the OnScreen to initialize the GL context. cogl/Makefile.am | 4 ++ cogl/cogl-context.h | 8 ++++ cogl/winsys/cogl-winsys-egl.c | 75 +++++++++++++++++++++++++++++++++++++++-- configure.ac | 21 +++++++++++ 4 files changed, 105 insertions(+), 3 deletions(-) commit bde6979c066c60639f05749a2de73c8554eeecc9 Author: Damien Lespiau Date: Mon May 16 16:12:00 2011 +0100 framebuffer: Checks if glBindFramebuffer() exists when using GLES1 With GLES 1, frame buffers are a optional extensions. We need to make sure the pointer exist before calling the function and do that by just checkout the corresponding feature. cogl/cogl-framebuffer.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit d384466a580108b6163de5beb77dfc3c143fa2d4 Author: Damien Lespiau Date: Mon May 16 16:04:33 2011 +0100 winsys-egl: Use g_clear_error() between two context creation tries When try_create_context() returns saying that it has to be run again to try to create a context with an alternate configuration, it might not have a GError set (and in fact it does not right now). g_clear_error() handles that case where error is still NULL; cogl/winsys/cogl-winsys-egl.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit 051e6da8875b9547a3b2281be2f6c25071653b3d Author: Damien Lespiau Date: Fri May 13 08:11:57 2011 +0100 misc: Add the single include guard to cogl-define.h This is a generated file and maybe the reason why it was not included the first time? cogl/cogl-defines.h.in | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit dd5a1c888b68e3d8a4f41212cb257c1e8dc3833b Author: Damien Lespiau Date: Fri May 13 08:04:47 2011 +0100 gles1: Include GLES/egl.h or EGL/egl.h depending on the implementation Early implementations provided only a GLES/egl.h while Khronos's implementer guide now states EGL/egl.h is the One. Some implementations keep a GLES/egl.h wrapper around EGL/egl.h for backward compatibility while others provide EGL/egl.h only. Also took the opportunity to factorize a bit this inclusion in cogl-defines.h. cogl/cogl-context.h | 12 +----------- cogl/cogl-defines.h.in | 11 +++++++++++ cogl/winsys/cogl-winsys-egl.c | 16 ---------------- configure.ac | 13 +++++++++++++ 4 files changed, 25 insertions(+), 27 deletions(-) commit 1d6c6f0dad79e73fa719eb4b91d0f6455f6d921c Author: Damien Lespiau Date: Thu May 12 16:00:35 2011 +0100 build: Fix the Win32 platform test for GLES2 The error message has a small typo (copy and paste from the GLES1 detection code) and the check was reversed. configure.ac | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 780c6fe05ddc4b70cdff853927446d9c73624420 Author: Damien Lespiau Date: Thu May 12 15:51:01 2011 +0100 build: Ensure EGL related variables are defined even when EGL_CHECKED=yes When checking for EGL earlier in the configure script (ie EGL_CHECKED is "yes"), we did not execute some EGL code. Let's split that code in two: - A first part that has a last change to check for EGL - A second one that defines variables and that should always been run in an EGL build configure.ac | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit 3530354d5d5da1248cc6636dbf3837294f0a2121 Author: Damien Lespiau Date: Thu May 12 14:59:44 2011 +0100 build: Fix the GLES headers check GLES/glext.h and GLES2/gl2ext.h need to include GLES/gl.h and GLES2/gl2.h respectively to get the GL types. This used to work as autoconf used to only do a preprocessor pass in AC_CHECK_HEADER(S), but now it also tries to compile a small test program and thus the test failed. configure.ac | 28 ++++++++++++++++++++-------- 1 files changed, 20 insertions(+), 8 deletions(-) commit 0ac8135b873c80c73cf5468dd2d2e01118bc29e7 Author: Damien Lespiau Date: Thu May 12 14:26:54 2011 +0100 build: Fix the Win32 platform test for GLES1 We want to bail out if trying to configure Cogl with GLES1 on Windows. Not the opposite. configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 25cd2e12f9be9af077d8350549877210fe46d0e0 Author: Damien Lespiau Date: Thu May 12 14:29:38 2011 +0100 misc: Add a .vimrc file For people using per project vimrc files, provide a vim config file that describes Cogl's coding style. .vimrc | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit cb7433cce98ce4c692dd7063d7307f5c41ef6ef2 Author: Robert Bragg Date: Mon May 16 18:45:51 2011 +0100 Adds missing cogl-depth-state-private.h This file was accidentally missed in the last commit cogl/cogl-depth-state-private.h | 32 ++++++++++++++++++++++++++++++++ 1 files changed, 32 insertions(+), 0 deletions(-) commit 07c0b9f89ffc64175befb9cf40a07f499169ed67 Author: Robert Bragg Date: Thu Apr 14 18:12:03 2011 +0100 Add CoglDepthState API Instead of simply extending the cogl_pipeline_ namespace to add api for controlling the depth testing state we now break the api out. This adds a CoglDepthState type that can be stack allocated. The members of the structure are private but we have the following API to setup the state: cogl_depth_state_init cogl_depth_state_set_test_enabled cogl_depth_state_get_test_enabled cogl_depth_state_set_test_function cogl_depth_state_get_test_function cogl_depth_state_set_writing_enabled cogl_depth_state_get_writing_enabled cogl_depth_state_set_range cogl_depth_state_get_range This removes the following experimental API which is now superseded: cogl_material_set_depth_test_enabled cogl_material_get_depth_test_enabled cogl_material_set_depth_test_function cogl_material_get_depth_test_function cogl_material_set_depth_writing_enabled cogl_material_get_depth_writing_enabled cogl_material_set_depth_range cogl_material_get_depth_range Once a CoglDepthState structure is setup it can be set on a pipeline using cogl_pipeline_set_depth_state(). cogl/Makefile.am | 3 + cogl/cogl-depth-state.c | 108 ++++++++++++ cogl/cogl-depth-state.h | 261 ++++++++++++++++++++++++++++++ cogl/cogl-material-compat.c | 65 ++------ cogl/cogl-material-compat.h | 166 +++---------------- cogl/cogl-pipeline-opengl.c | 38 +++--- cogl/cogl-pipeline-private.h | 11 +-- cogl/cogl-pipeline.c | 236 +++++++-------------------- cogl/cogl-pipeline.h | 161 +++---------------- cogl/cogl.h | 1 + cogl/driver/gl/cogl-gl.c | 3 +- cogl/driver/gles/cogl-gles.c | 1 + doc/reference/cogl-2.0/Makefile.am | 1 + doc/reference/cogl-2.0/cogl-sections.txt | 14 ++ doc/reference/cogl/Makefile.am | 1 + doc/reference/cogl/cogl-sections.txt | 22 ++- 16 files changed, 541 insertions(+), 551 deletions(-) commit eb109e6cc09e9024ad5303f02e34bc2de00ad8e7 Author: Neil Roberts Date: Mon May 16 16:34:48 2011 +0100 cogl-primitive: Fix some broken changes for removal of NULL terminator Commit 3c1e83c7 changed uses of arrays of CoglAttributes to take a length instead of being NULL terminated. In cogl_primitive_new it was still adding the NULL terminator to the array it passes to cogl_primitive_new_with_attributes but then it was also including this terminator in the count so it would just segfault when it tries to ref the NULL pointer. Also _cogl_primitive_new_with_attributes_unref was still trying to detect the NULL terminator so it would also crash. cogl/cogl-primitive.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-) commit f23a387359fd6634169383ca4555813f2464780b Author: Robert Bragg Date: Mon May 16 17:28:55 2011 +0100 pango: ensure g-ir-compiler can find Cogl-1.0.gir This uses INTROSPECTION_COMPILER_ARGS to pass --includedir=$(top_builddir)/cogl so when building the CoglPango typelib the compiler can find the required Cogl-1.0.gir file. cogl-pango/Makefile.am | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 47da69cc3ebaa68a826491c6f8235d60102523b0 Author: Robert Bragg Date: Mon May 16 16:21:35 2011 +0100 doc: fix the name of the cogl_quaternion_equal args cogl/cogl-quaternion.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit a466dc272b28f8caaad4de369b57e37481415064 Author: Neil Roberts Date: Mon May 16 15:41:25 2011 +0100 Don't include cogl-pango.h when scanning introspection data cogl/cogl-pango.h can't be included unless the include directory for Pango is given in the compiler flags. In an application, it is expected that if they are using this header then they would pull in cogl-pango-1.0.pc which would provide this. However when building Cogl itself we might be building without Pango support so the Makefile can't rely on PANGO_CFLAGS. This was breaking building the introspection data because cogl-pango.h was listed as one of the files to scan but it can't be included. cogl/Makefile.am | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 3c1e83c7f5df6e41aa9b2b0eec8df76af93ea0b0 Author: Robert Bragg Date: Thu Mar 3 01:02:12 2011 +0000 Don't pass around NULL terminated CoglAttribute arrays For the first iteration of the CoglAttribute API several of the new functions accepted a pointer to a NULL terminated list of CoglAttribute pointers - probably as a way to reduce the number of arguments required. This style isn't consistent with existing Cogl APIs though and so we now explicitly pass n_attributes arguments and don't require the NULL termination. cogl/cogl-attribute-private.h | 24 ++++--- cogl/cogl-attribute.c | 136 ++++++++++++++++++++++------------------- cogl/cogl-attribute.h | 28 +++++---- cogl/cogl-journal.c | 43 +++++++------ cogl/cogl-primitive.c | 118 +++++++++++++++++++----------------- cogl/cogl-primitive.h | 11 ++-- cogl/cogl-primitives.c | 28 ++++---- cogl/cogl-vertex-buffer.c | 6 +- cogl/cogl2-path.c | 28 ++++----- 9 files changed, 222 insertions(+), 200 deletions(-) commit bf7653ac93e0797a1b3378f0259a00c730560b20 Author: Robert Bragg Date: Wed Mar 2 23:31:19 2011 +0000 Rename CoglIndexArray to CoglIndexBuffer This is part of a broader cleanup of some of the experimental Cogl API. One of the reasons for this particular rename is to switch away from using the term "Array" which implies a regular, indexable layout which isn't the case. We also want to strongly imply a relationship between CoglBuffers and CoglIndexBuffers and be consistent with the CoglAttributeBuffer and CoglPixelBuffer APIs. cogl/Makefile.am | 6 +- cogl/cogl-attribute.c | 24 ++++---- cogl/cogl-buffer-private.h | 4 +- cogl/cogl-buffer.c | 2 +- cogl/cogl-index-array-private.h | 39 ----------- cogl/cogl-index-array.c | 132 -------------------------------------- cogl/cogl-index-array.h | 79 ----------------------- cogl/cogl-index-buffer-private.h | 38 +++++++++++ cogl/cogl-index-buffer.c | 117 +++++++++++++++++++++++++++++++++ cogl/cogl-index-buffer.h | 79 +++++++++++++++++++++++ cogl/cogl-indices-private.h | 4 +- cogl/cogl-indices.c | 34 +++++----- cogl/cogl-indices.h | 14 ++-- cogl/cogl.h | 2 +- doc/reference/cogl/Makefile.am | 2 +- 15 files changed, 280 insertions(+), 296 deletions(-) commit c328e0608ff7c92b39524dfd3efa3e858b7260e0 Author: Robert Bragg Date: Wed Mar 2 15:19:57 2011 +0000 Rename CoglPixelArray to CoglPixelBuffer This is part of a broader cleanup of some of the experimental Cogl API. One of the reasons for this particular rename is to switch away from using the term "Array" which implies a regular, indexable layout which isn't the case. We also want to strongly imply a relationship between CoglBuffers and CoglPixelBuffers and be consistent with the CoglAttributeBuffer and CoglIndexBuffer APIs. cogl/Makefile.am | 6 +- cogl/cogl-buffer.c | 2 +- cogl/cogl-index-array.c | 2 +- cogl/cogl-pixel-array-private.h | 55 -------------- cogl/cogl-pixel-array.c | 148 -------------------------------------- cogl/cogl-pixel-array.h | 131 --------------------------------- cogl/cogl-pixel-buffer-private.h | 55 ++++++++++++++ cogl/cogl-pixel-buffer.c | 148 ++++++++++++++++++++++++++++++++++++++ cogl/cogl-pixel-buffer.h | 131 +++++++++++++++++++++++++++++++++ cogl/cogl-texture.c | 14 ++-- cogl/cogl.h | 2 +- doc/reference/cogl/Makefile.am | 2 +- 12 files changed, 348 insertions(+), 348 deletions(-) commit ce7c06dc039189f8d7ebe971864bf3d109fa6324 Author: Robert Bragg Date: Wed Mar 2 15:01:41 2011 +0000 Rename CoglVertexArray to CoglAttributeBuffer This is part of a broader cleanup of some of the experimental Cogl API. One of the reasons for this particular rename is to switch away from using the term "Array" which implies a regular, indexable layout which isn't the case. We also want to have a strongly implied relationship between CoglAttributes and CoglAttributeBuffers. cogl/Makefile.am | 6 +- cogl/cogl-attribute-buffer-private.h | 38 ++++++++++++ cogl/cogl-attribute-buffer.c | 77 +++++++++++++++++++++++ cogl/cogl-attribute-buffer.h | 82 +++++++++++++++++++++++++ cogl/cogl-attribute-private.h | 2 +- cogl/cogl-attribute.c | 49 ++++++++------- cogl/cogl-attribute.h | 11 ++-- cogl/cogl-buffer-private.h | 4 +- cogl/cogl-buffer.c | 2 +- cogl/cogl-index-array.c | 7 +- cogl/cogl-journal.c | 32 +++++----- cogl/cogl-path-private.h | 10 ++-- cogl/cogl-primitive-private.h | 2 +- cogl/cogl-primitive.c | 80 ++++++++++++------------ cogl/cogl-primitive.h | 16 +++--- cogl/cogl-primitives.c | 21 +++--- cogl/cogl-vertex-array-private.h | 39 ------------ cogl/cogl-vertex-array.c | 77 ----------------------- cogl/cogl-vertex-array.h | 82 ------------------------- cogl/cogl-vertex-buffer-private.h | 4 +- cogl/cogl-vertex-buffer.c | 41 ++++++------ cogl/cogl.h | 2 +- cogl/cogl2-path.c | 112 +++++++++++++++++----------------- 23 files changed, 401 insertions(+), 395 deletions(-) commit 2da24ab86301ff75670beb4150b56d9339e590d1 Author: Robert Bragg Date: Fri May 13 17:30:08 2011 +0100 Add compile time checks for size of public structs To help catch accidental changes to the size of public structs that can be allocated on the stack this patch adds compile time checks that our struct sizes haven't changed. cogl/cogl-euler.h | 1 + cogl/cogl-matrix.h | 1 + cogl/cogl-quaternion.h | 1 + cogl/cogl-types.h | 12 ++++++++++++ 4 files changed, 15 insertions(+), 0 deletions(-) commit df1915d95735f4d13489f955235f5e532161494a Author: Robert Bragg Date: Thu Feb 25 01:40:29 2010 +0000 math: Adds an experimental euler API This adds an experimental CoglEuler data type and the following new functions: cogl_euler_init cogl_euler_init_from_matrix cogl_euler_init_from_quaternion cogl_euler_equal cogl_euler_copy cogl_euler_free cogl_quaternion_init_from_euler Since this is experimental API you need to define COGL_ENABLE_EXPERIMENTAL_API before including cogl.h cogl/Makefile.am | 2 + cogl/cogl-euler.c | 183 ++++++++++++++++++++++ cogl/cogl-euler.h | 252 ++++++++++++++++++++++++++++++ cogl/cogl-quaternion.c | 37 +++++ cogl/cogl-quaternion.h | 6 + cogl/cogl-types.h | 8 + cogl/cogl.h | 1 + doc/reference/cogl-2.0/cogl-sections.txt | 11 ++ doc/reference/cogl/cogl-sections.txt | 12 ++ 9 files changed, 512 insertions(+), 0 deletions(-) commit d1434d1c335755955c41df0366478986e81ad650 Author: Robert Bragg Date: Thu Feb 25 01:40:29 2010 +0000 math: Adds an experimental quaternion API This adds an experimental quaternion utility API. It's not yet fully documented but it's complete enough that people can start to experiment with using it. It adds the following functions: cogl_quaternion_init_identity cogl_quaternion_init cogl_quaternion_init_from_angle_vector cogl_quaternion_init_from_array cogl_quaternion_init_from_x_rotation cogl_quaternion_init_from_y_rotation cogl_quaternion_init_from_z_rotation cogl_quaternion_equal cogl_quaternion_copy cogl_quaternion_free cogl_quaternion_get_rotation_angle cogl_quaternion_get_rotation_axis cogl_quaternion_normalize cogl_quaternion_dot_product cogl_quaternion_invert cogl_quaternion_multiply cogl_quaternion_pow cogl_quaternion_slerp cogl_quaternion_nlerp cogl_quaternion_squad cogl_get_static_identity_quaternion cogl_get_static_zero_quaternion Since it's experimental API you'll need to define COGL_ENABLE_EXPERIMENTAL_API before including cogl.h. cogl/Makefile.am | 2 + cogl/cogl-matrix-mesa.c | 38 ++ cogl/cogl-matrix-mesa.h | 5 + cogl/cogl-matrix.c | 9 + cogl/cogl-matrix.h | 21 +- cogl/cogl-quaternion-private.h | 39 ++ cogl/cogl-quaternion.c | 617 ++++++++++++++++++++++++++++++ cogl/cogl-quaternion.h | 486 +++++++++++++++++++++++ cogl/cogl-types.h | 4 + cogl/cogl.h | 1 + doc/reference/cogl-2.0/cogl-docs.xml.in | 1 + doc/reference/cogl-2.0/cogl-sections.txt | 28 ++ doc/reference/cogl/cogl-docs.xml.in | 1 + doc/reference/cogl/cogl-sections.txt | 28 ++ 14 files changed, 1278 insertions(+), 2 deletions(-) commit b316241612c43b24867c0be6c77b70087ead72be Author: Robert Bragg Date: Wed May 11 17:21:07 2011 +0100 deprecate #include cogl-pango is conceptually a separate library so it doesn't seem appropriate to bundle the headers with all the other cogl headers. Also in-tree the headers live in a cogl-pango directory so if we want examples that can include cogl-pango consistently when built in or out of tree using the convention #include makes that easy. This adds a compatibility cogl/cogl-pango.h header that's will redirect to cogl-pango/cogl-pango.h with a warning, or result in an error if COGL_ENABLE_EXPERIMENTAL_2_0_API is defined. cogl-pango/Makefile.am | 4 ++-- cogl/Makefile.am | 1 + cogl/cogl-pango.h | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) commit a789107860d7d70138219dc4dc679e564fcf0f92 Author: Damien Lespiau Date: Thu May 12 11:43:27 2011 +0100 build: Only allow GLX when finding the x11 pc file You can refine earlier the ALLOW_GLX variable when enabling OpenGL builds: No x11.pc? no GLX! configure.ac | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 0da07b4e3de41f268301f8759b699ae132a0dc71 Author: Damien Lespiau Date: Thu May 12 12:59:22 2011 +0100 build: Fix gtkdocize as it needs to parse the GTK_DOC_CHECK line configure.ac | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) commit 5ad1869a3df2fdd2d487bb46fc40a275676672eb Author: Damien Lespiau Date: Thu May 12 11:11:07 2011 +0100 gitignore: Ignore *.exe files .gitignore | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit dc5d3785f6f0f00f39b25285d9c54f17582e4063 Author: Damien Lespiau Date: Thu May 12 11:07:30 2011 +0100 build: Allow to compile a git checkout without gtk-doc Gtk-doc can be hard to install on Windows. This patch enables people wanting to hack on Cogl itself from a Windows system to do so without the hassle to get gtk-doc installed first. autogen.sh | 13 +++++++------ configure.ac | 3 ++- doc/reference/cogl-2.0/Makefile.am | 3 ++- doc/reference/cogl/Makefile.am | 3 ++- 4 files changed, 13 insertions(+), 9 deletions(-) commit 1127ab61a1c0020823bdd5a394ea35d5b181425e Author: Robert Bragg Date: Wed May 11 16:51:10 2011 +0100 don't add -Wshadow to MAINTAINER_CFLAGS The semantics of shadowing global variables is well defined and it gets quite annoying to avoid them completely since there are too many standard APIs with very poor namespacing. configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 89e46a472ffcb48a78ba5ab0ee77812299c9275f Author: Robert Bragg Date: Wed May 11 14:11:31 2011 +0100 framebuffer: check we have a draw/read_buffer before freeing When freeing a framebuffer stack it's possible to have entries with NULL draw or read buffers so we should check that before calling cogl_onscreen/offscreen_free. This fixes a crash with the wayland backend when running conformance tests such as cogl-test-object which never push a framebuffer. cogl/cogl-framebuffer.c | 22 ++++++++++++++-------- 1 files changed, 14 insertions(+), 8 deletions(-) commit 2282455f27341fb4074144e5ff830d7aa02f0cb6 Author: Robert Bragg Date: Wed May 11 14:07:02 2011 +0100 wayland: Allow setting foreign display/compositor To support toolkits targeting wayland and using Cogl we allow toolkits to be responsible for connecting to a wayland display and asking Cogl to use the toolkit owned display and compositor object. Note: eventually the plan is that wayland will allow retrospective querying of objects so we won't need the foreign compositor API when Cogl can simply query it from the foreign display. cogl/cogl-framebuffer.h | 9 +++++ cogl/cogl-renderer.h | 16 ++++---- cogl/winsys/cogl-winsys-egl.c | 76 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+), 8 deletions(-) commit 653d59af04326bf987c32623e86225a97f4c72d7 Author: Robert Bragg Date: Tue May 10 22:28:13 2011 +0100 Explicitly set EGL_PLATFORM=wayland for wayland winsys The EGL API doesn't provide for a way to explicitly select a platform when the driver can support multiple. Mesa allows selection using an EGL_PLATFORM environment variable though so we set that to "wayland" when we know that's what we want. cogl/winsys/cogl-winsys-egl.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit a54aa40dbef26455bbab9fddb84c737fac3ac8d2 Author: Robert Bragg Date: Wed May 11 16:39:10 2011 +0100 don't call cogl_set_default_context in hello.c Actually calling cogl_set_default_context isn't required because cogl_context_new implicitly sets the new context to be the default context. Since we want to eventually get rid of the concept of a default context we'd rather not pollute the example with the concept. examples/hello.c | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-) commit 442d4586b721afc404354de654ed53e9cca093a4 Author: Neil Roberts Date: Wed May 11 15:20:59 2011 +0100 win32: Use the right macro name for COGL_HAS_WIN32_SUPPORT Some places were using COGL_HAS_WIN32 but the only macro defined is COGL_HAS_WIN32_SUPPORT. The similar macros such as COGL_HAS_XLIB are only defined for compatibility with existing code but COGL_HAS_WIN32 was never defined so there's no need to support it. One of the places was including the non-existant cogl-win32.h. This has been removed because the file only temporarily existed during development of the backend. cogl/cogl-framebuffer.h | 4 ++-- cogl/cogl.h | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) commit a075f4498b3c49d7a349bec09758af2c2be67aaf Author: Neil Roberts Date: Wed May 11 13:50:32 2011 +0100 cogl-pipeline-fragend-arbfp: Fix the comparison for dot3 arguments There was a typo in fragend_arbfp_args_equal so that it wasn't comparing the constants correctly. Thomas Wood found this bug with static analysis. cogl/cogl-pipeline-fragend-arbfp.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit cdfad9cdbe65ec9fcf92ff70ef8ecdd2732a627e Author: Neil Roberts Date: Wed May 11 13:43:02 2011 +0100 cogl-vertex-buffer: Fix the size of the array of attribute pointers In update_primitive_attributes it tries to fill in an array of pointers with a NULL terminator. However it was only allocating enough space for a pointer for each of the attributes plus one byte instead of plus enough bytes for another pointer. Thomas Wood found this bug with static analysis. cogl/cogl-vertex-buffer.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 463603f1a09d3eabe68b69659a4f7e10840515e1 Author: Neil Roberts Date: Tue May 10 20:23:39 2011 +0100 cogl-winsys: Fix freeing a CoglOnscreen All of the winsys backends didn't handle cleaning up the CoglOnscreen properly so that they would assert in cogl_onscreen_free because the winsys pointer is never freed. They also didn't cope if deinit is called before init (which will be the case if an onscreen is created and freed without being allocated). cogl/winsys/cogl-winsys-egl.c | 7 +++++++ cogl/winsys/cogl-winsys-glx.c | 7 +++++++ cogl/winsys/cogl-winsys-wgl.c | 7 +++++++ 3 files changed, 21 insertions(+), 0 deletions(-) commit 6654533e40da87858d5f73f6db594f37a1abbce2 Author: Neil Roberts Date: Tue May 10 19:53:00 2011 +0100 cogl-winsys-wgl: Plug leak on error from SetPixelFormat When SetPixelFormat fails, the DC would get released but none of the other resources would be freed. This patch makes it call _cogl_winsys_onscreen_deinit on failure to clean up all of the resources. The patch looks big because it moves the onscreen_deinit and onscreen_bind functions. cogl/winsys/cogl-winsys-wgl.c | 133 +++++++++++++++++++++-------------------- 1 files changed, 69 insertions(+), 64 deletions(-) commit 6788c803420e6c26616d2ce202f082c0b9841b02 Author: Neil Roberts Date: Mon May 9 17:48:50 2011 +0100 Add a WGL winsys This adds a full winsys to handle WGL and Win32. cogl/Makefile.am | 5 + cogl/cogl-framebuffer-private.h | 8 + cogl/cogl-framebuffer.c | 29 + cogl/cogl-framebuffer.h | 15 + cogl/cogl-renderer.c | 8 +- cogl/cogl.h | 3 + cogl/winsys/cogl-winsys-private.h | 5 + cogl/winsys/cogl-winsys-wgl-feature-functions.h | 38 + cogl/winsys/cogl-winsys-wgl.c | 838 +++++++++++++++++++++++ configure.ac | 26 + 10 files changed, 974 insertions(+), 1 deletions(-) commit 14d1303259e5deee7004d9f228cbab98a04214d0 Author: Neil Roberts Date: Tue May 10 13:51:41 2011 +0100 cogl-winsys: Explicitly comment which vfuncs are optional Some of the virtual functions in CoglWinsysVtable only need to be implemented for specific backends or when a specific feature is advertised. This splits the vtable struct into two commented sections marking which are optional and which are required. Wherever an optional function is used there is now a g_return_if_fail to ensure there is an implementation. cogl/cogl-clutter.c | 3 +++ cogl/cogl-context.c | 4 ++++ cogl/cogl-framebuffer.c | 27 +++++++++++++++++++++++++-- cogl/winsys/cogl-winsys-egl.c | 20 -------------------- cogl/winsys/cogl-winsys-private.h | 36 ++++++++++++++++++++---------------- 5 files changed, 52 insertions(+), 38 deletions(-) commit 614efb190b3d4a9de51c1927ac8a45f317ee4345 Author: Neil Roberts Date: Tue May 10 13:45:15 2011 +0100 cogl-winsys: Remove the get_vsync_counter virtual This function is only used internally within the GLX winsys so there doesn't seem to be much point in it being a virtual winsys backend function. cogl/winsys/cogl-winsys-egl.c | 8 -------- cogl/winsys/cogl-winsys-glx.c | 1 - cogl/winsys/cogl-winsys-private.h | 3 --- 3 files changed, 0 insertions(+), 12 deletions(-) commit f2a37b27f902bdc26f20bb7e0e9952cabe747bcf Author: Neil Roberts Date: Tue May 10 13:14:48 2011 +0100 CoglWinsysVtable: Remove 'has_feature' This virtual function is no longer used or defined anywhere since the function was moved to the common backend code in 16bfa27d43. cogl/winsys/cogl-winsys-private.h | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-) commit e8b83f2880f4837d3e5138b12431e24845ccef84 Author: Robert Bragg Date: Thu Mar 17 19:31:34 2011 +0000 Adds wayland support to the cogl EGL winsys Wayland now supports integration via standard eglSurfaces which makes it possible to share more code with other EGL platforms. (though at some point cogl-winsys-egl.c really needs to gain a more formal CoglEGLPlatform abstraction so we can rein back on the amount of #ifdefs we have.) cogl/Makefile.am | 4 + cogl/cogl-renderer-private.h | 8 ++ cogl/cogl-renderer.h | 28 ++++ cogl/winsys/cogl-winsys-egl.c | 281 ++++++++++++++++++++++++++++++++++++++--- configure.ac | 25 ++++ 5 files changed, 329 insertions(+), 17 deletions(-) commit 4b6169267ca39764a3ce267e8c8064ca5818247c Author: Robert Bragg Date: Tue May 10 16:22:34 2011 +0100 winsys-egl: fix typo in _cogl_winsys_onscreen_init We were trying to set attr.event_mask instead of xattr.event mask which was causing a compilation error. cogl/winsys/cogl-winsys-egl.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit ef6097925866812c34f459aa100f1701e02aa71e Author: Robert Bragg Date: Sun May 8 23:23:44 2011 +0100 Adds experimental cogl 2.0 reference This pulls in the experimental cogl 2.0 reference manual from the clutter repository since it wasn't included in the filter-branch when we split cogl out. configure.ac | 2 + doc/reference/Makefile.am | 2 +- doc/reference/cogl-2.0/Makefile.am | 154 +++++++ doc/reference/cogl-2.0/blend-strings.xml | 129 ++++++ doc/reference/cogl-2.0/cogl-docs.xml.in | 195 +++++++++ doc/reference/cogl-2.0/cogl-sections.txt | 484 +++++++++++++++++++++ doc/reference/cogl-2.0/cogl_ortho.png | Bin 0 -> 12650 bytes doc/reference/cogl-2.0/fill-rule-even-odd.png | Bin 0 -> 3121 bytes doc/reference/cogl-2.0/fill-rule-non-zero.png | Bin 0 -> 3143 bytes doc/reference/cogl-2.0/quad-indices-order.png | Bin 0 -> 2620 bytes doc/reference/cogl-2.0/quad-indices-triangles.png | Bin 0 -> 8018 bytes 11 files changed, 965 insertions(+), 1 deletions(-) commit e6c98ae6ae1044c2cc9a420f55fce52655bef8d3 Author: Piotr Drąg Date: Sun May 8 21:31:46 2011 +0200 Updated Polish translation po/pl.po | 39 +++++++++++++++++++++++++++++++++++++++ 1 files changed, 39 insertions(+), 0 deletions(-) commit 39943228f015b45861bfc885ca8394f05c78ed2a Author: Piotr Drąg Date: Sun May 8 21:27:37 2011 +0200 Updated POTFILES.in po/POTFILES.in | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit ed97d871dfb4d01d5a39c83408dd5f2d8c5b7384 Author: Damien Lespiau Date: Fri May 6 18:34:36 2011 +0100 build: Distribute CODING_STYLE doc/Makefile.am | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit c310dbbc722c5de412dff71dcc55649db6379683 Author: Damien Lespiau Date: Fri May 6 18:21:00 2011 +0100 build: Make sure to build examples, doc and po last It seems more natural to compile examples after optional libraries as you could have an example illustrating one of those libraries. Build the docs and po files at the end too, trying to group the compilation of C files together. Makefile.am | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit d093c1b38996bf6a3a71936ad64cc571baeec8fb Author: Neil Roberts Date: Fri May 6 18:29:38 2011 +0100 cogl-pango-render: Add the atlas reorg callback to the right cache When creating a new display list the pango renderer tries to add a callback to the glyph cache so that it can be notified whenever the atlas is reorganized. However it was always registering the callback for the glyph cache which doesn't use mipmapping so if mipmapping is enabled then it wouldn't work correctly. This patch moves the two sets of caches (pipeline cache and glyph cache) into one struct so that it's a little bit easier to determine which pair to use in the code. cogl-pango/cogl-pango-render.c | 87 ++++++++++++++++++++++----------------- 1 files changed, 49 insertions(+), 38 deletions(-) commit 0bd87220b31c0631f204d464cb1569e7ed36a5f2 Author: Neil Roberts Date: Fri May 6 18:23:04 2011 +0100 cogl-pango/Makefile.am: Add $(top_builddir) to INCLUDES Some of the sources need to include which is in the build directory. I think this directory gets added to the include flags anyway by something so the actual building works but when building the introspection data out of tree it was not included so it failed to scan. cogl-pango/Makefile.am | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 8d4a6f4d4c9db2b3dfcb8460cd7a318d812ab6a4 Author: Damien Lespiau Date: Fri May 6 17:59:00 2011 +0100 build: Enable building the documentation again At least the 1.6.0 documentation. The 2.0 one has been missed by the filter-branch and will be re-added later. Makefile.am | 2 +- configure.ac | 7 ++++++- doc/Makefile.am | 7 +++++++ doc/reference/Makefile.am | 1 + doc/reference/cogl/Makefile.am | 12 ++++++------ doc/reference/cogl/cogl-docs.xml.in | 2 +- 6 files changed, 22 insertions(+), 9 deletions(-) commit 3919f3e97eca078e6bdbbeb1e45886de161d839e Author: Neil Roberts Date: Fri May 6 17:21:30 2011 +0100 configure.ac: Add the check for the ffs function When Cogl was sharing Clutter's configure script, it had a check for the ffs function of libc so that it can provide a fallback if it is not available. This fallback was missed in the split out so Cogl would end up always using the fallback. configure.ac | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 0d5b38c8bfdd80f72a251ddfc9ffdf8899eb8c57 Author: Emmanuele Bassi Date: Fri May 6 17:34:49 2011 +0100 build: Don't make cogl-pango-1.0 depend on cogl-2.0 cogl-pango/cogl-pango-1.0.pc.in | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 800954e3391d6a9031514fcfd8b2520293634125 Author: Emmanuele Bassi Date: Fri May 6 17:14:17 2011 +0100 po: Fix xgettext complaining about a missing bug address po/Makevars | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 5c131e61e5cc3a292700710d9c0d76628ad43213 Author: Emmanuele Bassi Date: Fri May 6 17:13:56 2011 +0100 build: Generate CoglPango introspection data cogl-pango/Makefile.am | 51 +++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 46 insertions(+), 5 deletions(-) commit 62b7ea59729e83605e685aeb4e9da0fd190431d5 Author: Damien Lespiau Date: Fri May 6 17:10:42 2011 +0100 build: Fix make distcheck Some header files were split but never included in the list of source files and thus not distributed. cogl/Makefile.am | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 48c9157e97a49a2a1b469fe820cff2ad3c8ab4cb Author: Emmanuele Bassi Date: Fri May 6 16:53:43 2011 +0100 build: Compile the introspection data The compilation step for the introspection data was missing. cogl/Makefile.am | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) commit f02ec9fc46e9ee5a64c53cd649e43c19fe771330 Author: Damien Lespiau Date: Fri May 6 16:23:13 2011 +0100 gitignore: Update .gitignore to make git status silent again .gitignore | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit 8b4ee0964bdadf0b89a79f3fa0cd9d303b142c0b Author: Robert Bragg Date: Fri May 6 12:36:39 2011 +0100 Remove all the options for building cogl standalone This removes all the remnants from being able to build Cogl standalone while it was part of the Clutter repository. Now that Cogl has been split out then standalone builds are the only option. Makefile.am | 6 +----- cogl-pango/Makefile.am | 18 ------------------ cogl/Makefile.am | 26 -------------------------- cogl/cogl-1.0-clutter.pc.in | 17 ----------------- configure.ac | 2 -- 5 files changed, 1 insertions(+), 68 deletions(-) commit 102d174a2a22070a6fceec1ce880d3535bd21aef Author: Robert Bragg Date: Fri May 6 12:26:15 2011 +0100 Adds an initial README to the repo Makefile.am | 2 + README.in | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 1 + 3 files changed, 157 insertions(+), 0 deletions(-) commit bf4c64e1903f2cdbc511f96e040a8b9d8bf4b324 Author: Robert Bragg Date: Fri May 6 11:01:38 2011 +0100 Adds an initial .gitignore This adds a .gitignore file to the top of the repo .gitignore | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 85 insertions(+), 0 deletions(-) commit 00e157e8c94117595c525d8fdf45dc5a75781326 Author: Robert Bragg Date: Thu May 5 22:37:57 2011 +0100 Adds an initial cogl.doap file This adds an initial doap file for Cogl. cogl.doap | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 46 insertions(+), 0 deletions(-) commit 6f2193545ef67db60fc7e7ab1548a82e5a8b8348 Author: Robert Bragg Date: Thu May 5 22:04:07 2011 +0100 consistently refer to cogl-pango as "cogl-pango" This renames the pango directory to cogl-pango and it renames the installed library to libcogl-pango instead of libcoglpango. Makefile.am | 2 +- cogl-pango/Makefile.am | 64 +++ cogl-pango/cogl-pango-1.0.pc.in | 13 + cogl-pango/cogl-pango-display-list.c | 444 +++++++++++++++++ cogl-pango/cogl-pango-display-list.h | 69 +++ cogl-pango/cogl-pango-fontmap.c | 209 ++++++++ cogl-pango/cogl-pango-glyph-cache.c | 414 ++++++++++++++++ cogl-pango/cogl-pango-glyph-cache.h | 93 ++++ cogl-pango/cogl-pango-pipeline-cache.c | 238 +++++++++ cogl-pango/cogl-pango-pipeline-cache.h | 53 ++ cogl-pango/cogl-pango-private.h | 38 ++ cogl-pango/cogl-pango-render.c | 836 ++++++++++++++++++++++++++++++++ cogl-pango/cogl-pango.h | 85 ++++ cogl-pango/cogl-pango.pc.in | 13 + cogl/Makefile.am | 2 +- configure.ac | 6 +- examples/Makefile.am | 3 +- pango/Makefile.am | 64 --- pango/cogl-pango-1.0.pc.in | 13 - pango/cogl-pango-display-list.c | 444 ----------------- pango/cogl-pango-display-list.h | 69 --- pango/cogl-pango-fontmap.c | 209 -------- pango/cogl-pango-glyph-cache.c | 414 ---------------- pango/cogl-pango-glyph-cache.h | 93 ---- pango/cogl-pango-pipeline-cache.c | 238 --------- pango/cogl-pango-pipeline-cache.h | 53 -- pango/cogl-pango-private.h | 38 -- pango/cogl-pango-render.c | 836 -------------------------------- pango/cogl-pango.h | 85 ---- pango/cogl-pango.pc.in | 13 - 30 files changed, 2575 insertions(+), 2576 deletions(-) commit fbda52d21b66c517252c4989659f8ff297ae4702 Author: Robert Bragg Date: Thu May 5 21:52:40 2011 +0100 Give cogl-pango it's own pkg-config file We now install cogl-pango-1.0 and cogl-pango-2.0 pkg-config files that applications should optionally depend on if they want to use the cogl_pango API. cogl/cogl-1.0-clutter.pc.in | 2 +- cogl/cogl-1.0.pc.in | 2 +- configure.ac | 2 ++ pango/Makefile.am | 8 ++++++++ pango/cogl-pango-1.0.pc.in | 13 +++++++++++++ pango/cogl-pango.pc.in | 13 +++++++++++++ 6 files changed, 38 insertions(+), 2 deletions(-) commit 4211462eb246aa423496a84b36a27605111bf0eb Author: Robert Bragg Date: Thu May 5 21:39:40 2011 +0100 Make building cogl-pango optional When building for platforms that don't use pango for handling text you may not need the cogl-pango library. Makefile.am | 6 +++++- configure.ac | 21 ++++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) spec=1.6.0..split commit b6ebbc366e5570366a6037fc47ff727672cb9fe9 Author: Robert Bragg Date: Thu May 5 21:27:11 2011 +0100 Adds a COPYING file This adds a COPYFILE detailing the LGPL v2.1 COPYING | 504 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 504 insertions(+), 0 deletions(-) commit a7541e0911c85d683f80b8aeb2f5bbe36152f265 Author: Robert Bragg Date: Thu May 5 21:20:47 2011 +0100 Adds mingw dependency fetching script This adds a script to simplify fetching the dependencies for cross-compiling Cogl for windows using a mingw gcc compiler. build/mingw/Makefile.am | 1 + build/mingw/README | 5 + build/mingw/mingw-fetch-dependencies.sh | 336 +++++++++++++++++++++++++++++++ 3 files changed, 342 insertions(+), 0 deletions(-) commit 680c173947c5ff001b9fa780b39b39c21a31c884 Author: Robert Bragg Date: Thu May 5 20:41:01 2011 +0100 framebuffer: in onscreen_x11_get_xid return foreign xids If a foreign xid has been set on a CoglOnscreen then cogl_onscreen_x11_get_window_xid doesn't need to defer to the winsys to get the underlying window xid. This also means it's possible to read back the xid before the framebuffer is allocated which fixes a crash in the x11-foreign example app. cogl/cogl-framebuffer.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) commit ccd0079b57bee5aa0da0f6a9f4b48561bb9b6264 Author: Robert Bragg Date: Thu May 5 20:38:13 2011 +0100 fix a /XDisplay/Display/ typo in x11-foreign.c This removes a spurious X prefix that was causing a compilation error. examples/x11-foreign.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 3a4d0a735b6a14f0cd05db30c81eb9cabb824d28 Author: Robert Bragg Date: Thu May 5 20:34:54 2011 +0100 Export some private symbols from libcogl for coglpango Ideally we wouldn't have any private symbols exported, but for now there are some APIs that coglpango needs access to that aren't public so we have ensure they are exported. The aim is to get rid of this need at some point. cogl/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 14ed963b050c93c2cad8668290dfb6014cea06e8 Author: Neil Roberts Date: Wed Mar 30 16:39:38 2011 +0100 cogl-debug: Add an option to disable atlasing sharing If COGL_DEBUG contains disable-shared-atlas Cogl will not try to share the atlas between glyphs and images. cogl/cogl-debug-options.h | 6 ++++++ cogl/cogl-debug.c | 1 + cogl/cogl-debug.h | 1 + pango/cogl-pango-glyph-cache.c | 3 +++ 4 files changed, 11 insertions(+), 0 deletions(-) commit 184527580e38c0227db87011fb38a1b830719fb4 Author: Neil Roberts Date: Wed Mar 30 16:33:04 2011 +0100 cogl_pipeline_equal: Handle COGL_WRAP_MODE_AUTOMATIC better When comparing the wrap modes of two pipeline layers it now considers COGL_WRAP_MODE_AUTOMATIC to be equivalent to CLAMP_TO_EDGE. By the time the pipeline is in the journal, the upper primitive code is expected to have overridden this wrap mode with something else if it wants any other behaviour. This is important for getting text to batch together with textures because the text explicitly sets the wrap mode to CLAMP_TO_EDGE on its pipeline. cogl/cogl-pipeline.c | 29 ++++++++++++++++++++++++++--- 1 files changed, 26 insertions(+), 3 deletions(-) commit 66c54e04de83b7a5333f9bc1930598a494ac6236 Author: Neil Roberts Date: Fri Feb 26 13:01:54 2010 +0000 cogl-pango: Don't set the special combine function for atlased textures The material cache will now only set the special combine mode if the texture only has an alpha component. The atlased textures will have all four components so it will leave the combine functions at the default. This increases the chances of batching between glyphs and images. When using the global atlas, the glyph from cairo is now rendered into an ARGB surface rather than an alpha-only surface. pango/cogl-pango-pipeline-cache.c | 61 ++++++++++++++++++++++++++---------- pango/cogl-pango-render.c | 28 ++++++++++++++++- 2 files changed, 70 insertions(+), 19 deletions(-) commit cbf011dcd03f7e0fb385691d99b6ed633d646470 Author: Neil Roberts Date: Fri Feb 26 12:38:22 2010 +0000 cogl-pango: Use a seperate cache of pipelines Instead of creating just two materials (one for texturing and one for solid primitives) the pango renderer now maintains a cache of pipelines. The display list can request a pipeline for a texture from the cache. The same pipeline cache is used by all display lists so that the pipelines can be shared. This avoids changing the texture on the material during a paint run. pango/Makefile.am | 16 ++-- pango/cogl-pango-display-list.c | 68 +++++++----- pango/cogl-pango-display-list.h | 7 +- pango/cogl-pango-pipeline-cache.c | 211 +++++++++++++++++++++++++++++++++++++ pango/cogl-pango-pipeline-cache.h | 53 +++++++++ pango/cogl-pango-render.c | 77 ++++---------- 6 files changed, 338 insertions(+), 94 deletions(-) commit b83069f3b29e61fb8a119cb0fe4aad4e8789f956 Author: Neil Roberts Date: Mon Feb 22 16:40:49 2010 +0000 cogl-pango-glyph-cache: Don't put zero-sized glyphs in the cache It now avoids trying to reserve space for zero-sized glyphs. That happens for example when the layout contains a space. This was causing the regular glyph cache to be used because the global atlas does not support zero-sized images. That would then break up the batching. Instead it now still reserves an entry in the cache but leaves the texture as COGL_INVALID_HANDLE. pango/cogl-pango-glyph-cache.c | 39 ++++++++++++++++++++++++--------------- pango/cogl-pango-render.c | 7 ++++++- 2 files changed, 30 insertions(+), 16 deletions(-) commit f098f8fdec4dfd75700bf5a6abe6dc4fa422504f Author: Neil Roberts Date: Thu May 5 16:09:22 2011 +0100 Revert "cogl-pango-display-list: Don't use VBOs if the texture can't handle it" This reverts commit 32c91793e46e0625a19c0d2bc98d6cd147dff702. This commit is no longer needed since the display list will now only have primitive textures in it. pango/cogl-pango-display-list.c | 6 +----- 1 files changed, 1 insertions(+), 5 deletions(-) commit 3f1e0c701e7662bb3aef04b6f50cc3b240bb56ca Author: Neil Roberts Date: Wed Mar 30 13:48:34 2011 +0100 cogl-pango-render: Add the base texture to the display list When rendering a glyph from a texture, instead of adding the glyph's texture handle to the display list it now retrieves the base texture using _cogl_texture_foreach_subtexture_in_region and adds that instead. That way the display can recognise that glyphs in the global atlas are sharing the same texture and combine them into one VBO. pango/cogl-pango-render.c | 62 +++++++++++++++++++++++++++++++++++++-------- 1 files changed, 51 insertions(+), 11 deletions(-) commit a7aad27212b2667361d1bdba6d1cc48de8f3aef3 Author: Neil Roberts Date: Wed Mar 30 13:46:46 2011 +0100 cogl-bitmap-private.h: Include cogl-bitmap.h There was a header dependency problem which meant that cogl-texture-private.h couldn't be included without first including cogl-bitmap.h cogl/cogl-bitmap-private.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 28b0f76cc90045913d617020fba20554c5a0bc5e Author: Neil Roberts Date: Wed Mar 30 12:56:09 2011 +0100 cogl-pango-glyph-cache: Notify of reorg for global atlased glyphs Whenever the glyph cache puts a glyph in the global atlas it will now register for notifications of reorganisation of the global atlases. When this happens it will forward this on as a notification of reorganisation of the glyph cache. pango/cogl-pango-glyph-cache.c | 36 ++++++++++++++++++++++++++++-------- 1 files changed, 28 insertions(+), 8 deletions(-) commit 239614a3752368502c69598a08b0c7ae6b96bb73 Author: Neil Roberts Date: Wed Mar 30 12:53:50 2011 +0100 cogl-atlas-texture: Add a callback for when any atlas reorganizes This adds cogl_atlas_texture_* functions to register a callback that will get invoked whenever any of the CoglAtlas's the textures use get reorganized. The callback is global and is not tied to any particular atlas texture. cogl/cogl-atlas-texture-private.h | 8 ++++++++ cogl/cogl-atlas-texture.c | 36 ++++++++++++++++++++++++++++++++++++ cogl/cogl-context-private.h | 1 + cogl/cogl-context.c | 2 ++ 4 files changed, 47 insertions(+), 0 deletions(-) commit 25c36c452f2dda2bb0ec6e03c137068f84944aef Author: Neil Roberts Date: Thu Feb 18 17:35:14 2010 +0000 pango-glyph-cache: Try to put glyphs in the global atlas If mipmapping is disabled, it will now try to create a standalone atlas texture for a glyph rather than putting it in the atlas. If the atlas texture can't be created then it will fallback to the glyph cache. pango/cogl-pango-glyph-cache.c | 139 +++++++++++++++++++++++++++++----------- 1 files changed, 102 insertions(+), 37 deletions(-) commit c76a4f8e2467645741ecf20bc78ea4ce1de15580 Author: Neil Roberts Date: Thu Feb 18 16:33:12 2010 +0000 cogl-atlas-texture: Split out new_from_bitmap to new_with_size This adds a new function called _cogl_atlas_texture_new_with_size. The old new_from_bitmap function now just calls this and updates the texture with the data. cogl/cogl-atlas-texture-private.h | 6 +++ cogl/cogl-atlas-texture.c | 81 +++++++++++++++++++++++-------------- 2 files changed, 57 insertions(+), 30 deletions(-) commit a2d9ad21ef6f4319867700c0940065f1a6974930 Author: Neil Roberts Date: Thu Feb 18 15:04:06 2010 +0000 cogl-pango-display-list: Don't use VBOs if the texture can't handle it If the texture can't be hardware repeated (ie, if it is sliced or it has waste) then Cogl will reject the layer when rendering with a VBO. In this case we should always fall back to rendering with cogl_rectangle. This commit is only needed temporarily because Cogl will end up putting atlas textures in the display list. A later commit in the series will make it so that the display list always has primitive textures in it so this commit can be reverted. pango/cogl-pango-display-list.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) commit 12b751a8e1ee5ed533140d1e5ba6c8b473423c75 Author: Neil Roberts Date: Thu Feb 18 14:30:44 2010 +0000 cogl-pango: Use a separate glyph cache for mipmapped rendering This reverts the changes in 54d8aadf which combined the two glyph caches into one. We want to start using separate caches again so that we can non-mipmapped textures into the global atlas. pango/cogl-pango-glyph-cache.c | 2 +- pango/cogl-pango-glyph-cache.h | 2 +- pango/cogl-pango-render.c | 77 +++++++++++++++++++++++++++------------ 3 files changed, 55 insertions(+), 26 deletions(-) commit 6c23f27801249095fee3e13fffed1a96e59cb0b5 Author: Robert Bragg Date: Wed May 4 17:02:04 2011 +0100 Adds a way for Cogl to control event_mask of foreign wins This extends cogl_onscreen_x11_set_foreign_xid to take a callback to a function that details the event mask the Cogl requires the application to select on foreign windows. This is required because Cogl, for example, needs to track size changes of a window and may also in the future want other notifications such as map/unmap. Most applications wont need to use the foreign xwindow apis, but those that do are required to pass a valid callback and update the event mask of their window according to Cogl's requirements. cogl/cogl-framebuffer-private.h | 2 + cogl/cogl-framebuffer.c | 10 ++++++- cogl/cogl-framebuffer.h | 58 ++++++++++++++++++++++++++++++++++++++- cogl/winsys/cogl-winsys-egl.c | 11 +++++++- cogl/winsys/cogl-winsys-glx.c | 11 +++++++- examples/x11-foreign.c | 22 ++++++++++++++- 6 files changed, 109 insertions(+), 5 deletions(-) commit 97243ad9ac3fd47f6e1a5df2ec9a755a2082e550 Author: Robert Bragg Date: Wed May 4 11:10:54 2011 +0100 Adds cogl_onscreen_show/hide functions This adds Cogl API to show and hide onscreen framebuffers. We don't want to go too far down the road of abstracting window system APIs with Cogl since that would be out of its scope but the previous idea that we would automatically map framebuffers on allocation except for those made from foreign windows wasn't good enough. The problem is that we don't want to make Clutter always create stages from foreign windows but with the automatic map semantics then Clutter doesn't get an opportunity to select for all the events it requires before mapping. This meant that we wouldn't be delivered a mouse enter event for windows mapped underneath the cursor which would break Clutters handling of button press events. cogl/cogl-framebuffer.c | 31 ++++++++++++++++++++++ cogl/cogl-framebuffer.h | 52 +++++++++++++++++++++++++++++++++++++ cogl/winsys/cogl-winsys-egl.c | 21 +++++++++++++- cogl/winsys/cogl-winsys-glx.c | 17 ++++++++++- cogl/winsys/cogl-winsys-private.h | 4 +++ examples/hello.c | 2 + 6 files changed, 123 insertions(+), 4 deletions(-) commit 2a150003ad578b22fa12dd2a3175c2a6dbe29f2f Author: Robert Bragg Date: Wed May 4 00:16:50 2011 +0100 add missing name mangle for cogl_onscreen_set_swap_throttled We weren't mangling cogl_onscreen_set_swap_throttled to give it an _EXP postfix to clarify that it is an experimental symbol. cogl/cogl-framebuffer.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit ad56c00f7aa56cdf208a3034649f6c4f9d6eb2bf Author: Robert Bragg Date: Tue May 3 21:00:00 2011 +0100 Add missing _cogl_winsys_has_feature prototype This adds a private prototype for _cogl_winsys_has_feature in cogl-winsys-private.h to avoid compilation warnings. cogl/winsys/cogl-winsys-private.h | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit b44bde00c57b1b7f77472c9aa7eeb0ef18dfd6f4 Author: Robert Bragg Date: Tue Apr 19 17:48:40 2011 +0100 cogl/pango/Makefile.am pass EXTRA_LDFLAGS for linking When building on windows for example we need to ensure we pass -no-undefined to the linker. Although we were substituting a COGL_EXTRA_LDFLAGS variable from our configure.ac we forgot to reference that when linking cogl-pango. pango/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit d2e74d3a94b90cd2e2378ad858218e67e2840e94 Author: Robert Bragg Date: Tue Apr 19 17:47:57 2011 +0100 cogl/configure.ac: AC_SUBST an empty MAINTAINER_CFLAGS For compatibility with the way we build Cogl as part of Clutter we now substitute an empty MAINTAINER_CFLAGS variable. When building Cogl standalone all our extra CFLAGS go through COGL_EXTRA_CFLAGS so the separate MAINTAINER_CFLAGS aren't used, but automake will get confused if a substitution isn't made. configure.ac | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit a14e400dc99f1a64fb898dc9f0cd3305828dd2c0 Author: Robert Bragg Date: Tue Apr 19 17:45:26 2011 +0100 cogl/configure.ac: check when building for win32 This adds a check for when building on win32 so we can skip pkg-config checks for opengl and can add appropriate flags to COGL_EXTRA_{LD,C}FLAGS. configure.ac | 47 +++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 39 insertions(+), 8 deletions(-) commit e815928a5f8574d700d75aff9656bb407462db98 Author: Robert Bragg Date: Tue Apr 19 17:42:48 2011 +0100 cogl/configure.ac: fix pkg-config checks This fixes the gdk-pixbuf check to not mistakenly check for the "xi" package instead of gdk-pixbuf and remove a spurious listing "gl" in COGL_PKG_REQUIRES which should only be there when we are using using opengl not if we are using gles. configure.ac | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) commit 195cfa7814aaacd07ae7de4e1c1a3e4f2430c4d0 Author: Robert Bragg Date: Tue Apr 19 17:40:57 2011 +0100 cogl/Makefile.am: pass EXTRA_LDFLAGS for linking When building on windows for example we need to ensure we pass -no-undefined to the linker. Although we were substituting a COGL_EXTRA_LDFLAGS variable from our configure.ac we forgot to reference that when linking cogl. cogl/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit b3a7ee59308b817cfc181d433d431fec17d626d6 Author: Robert Bragg Date: Mon Apr 18 17:45:36 2011 +0100 cogl: remove OSX/WIN32 specific bits in favour of a stub winsys Until Cogl gains native win32/OSX support this remove the osx and win32 winsys files and instead we'll just rely on the stub-winsys.c to handle these platforms. Since the only thing the platform specific files were providing anyway was a get_proc_address function; it was trivial to simply update the clutter backend code to handle this directly for now. cogl/Makefile.am | 8 +------- cogl/winsys/cogl-winsys-osx.c | 35 ----------------------------------- cogl/winsys/cogl-winsys-stub.c | 5 +++++ cogl/winsys/cogl-winsys-win32.c | 35 ----------------------------------- configure.ac | 6 +----- 5 files changed, 7 insertions(+), 82 deletions(-) commit a8c7f43a7c8eddcae8d7372917ffb9be0c98fdaf Author: Robert Bragg Date: Mon Apr 18 17:35:15 2011 +0100 cogl-gl.c: remove really_enable_npot hack for OSX This is a workaround for a bug on OSX for some radeon hardware that we can't verify and the referenced bug link is no longer valid. If this is really still a problem then a new bug should be opened and we can look at putting the fix in some more appropriate place than cogl-gl.c cogl/driver/gl/cogl-gl.c | 37 ++++--------------------------------- 1 files changed, 4 insertions(+), 33 deletions(-) commit 0f7fce7e2b987516806d68dc3f89e282d9021930 Author: Robert Bragg Date: Mon Apr 18 17:17:21 2011 +0100 cogl/configure.ac: Adds --enable-stub-winsys option We want to be able to split Cogl out as a standalone project but there are still some window systems that aren't natively supported by Cogl. This allows Clutter to support those window systems directly but still work with a standalone Cogl library. This also ensures we set the SUPPORT_STUB conditional in clutter's configure.ac when building for win32/osx and wayland. configure.ac | 33 ++++++++++++++++++++++++++++++++- 1 files changed, 32 insertions(+), 1 deletions(-) commit cd6d561f6f781849e31475deb4f818564654ebc1 Author: Robert Bragg Date: Mon Apr 18 16:26:17 2011 +0100 winsys-glx: map X window automatically if not foreign For now we are going for the semantics that when a CoglOnscreen is first allocated then it will automatically be mapped. This is for convenience and if you don't want that behaviour then it is possible to instead create an Onscreen from a foreign X window and in that case it wont be mapped automatically. This approach means that Cogl doesn't need onscreen_map/unmap functions but it's possible we'll decide later that we can't avoid adding such functions and we'll have to change these semantics. cogl/winsys/cogl-winsys-glx.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 4bf868c0eb9c7951d91ef84574c5b16b12408e92 Author: Robert Bragg Date: Mon Apr 18 15:57:32 2011 +0100 cogl/configure.ac: make COGL_HAS_xyz defines public Instead of using AC_DEFINE for the various COGL_HAS_PLATFORM defines this now adds them to the COGL_DEFINES_SYMBOLS variable which gets substituted into the public cogl-defines.h header. configure.ac | 12 +++--------- 1 files changed, 3 insertions(+), 9 deletions(-) commit f5bb20212bf24d0173c038bcb72e3a93c311e1d8 Author: Robert Bragg Date: Thu Mar 17 19:32:54 2011 +0000 Adds Cogl Hello World and "X11 foreign" example applications This adds a simple standalone Cogl application that can be used to smoke test a standalone build of Cogl without Clutter. This also adds an x11-foreign app that shows how a toolkit can ask Cogl to draw to an X Window that it owns instead of Cogl being responsible for automatically creating and mapping an X Window for CoglOnscreen. Makefile.am | 2 +- configure.ac | 1 + examples/Makefile.am | 31 +++++++++++ examples/hello.c | 47 +++++++++++++++++ examples/x11-foreign.c | 136 ++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 216 insertions(+), 1 deletions(-) commit 711d035f44243d7ac0db27384974767911210588 Author: Robert Bragg Date: Thu Mar 10 15:15:08 2011 +0000 cogl/configure.ac: add options to control driver/egl platform This allows more detailed control over the driver and winsys features that Cogl should have. Cogl is designed so it can support multiple window systems simultaneously so we have enable/disable options for the drivers (gl vs gles1 vs gles2) and options for the individual window systems; currently glx and egl. Egl is broken down into an option for each platform. cogl/cogl-1.0-clutter.pc.in | 8 +- configure.ac | 358 ++++++++++++++++++++++++++++++++++++------- 2 files changed, 310 insertions(+), 56 deletions(-) commit 7037812ae615abe1329184f786e705124244675b Author: Robert Bragg Date: Fri Mar 4 12:50:39 2011 +0000 EGL: Updates GDL platform support The GDL API is used for example on intel ce4100 (aka Sodaville) based systems as a way to allocate memory that can be composited using the platforms overlay hardware. This updates the Cogl EGL winsys and the support in Clutter so we can continue to support these platforms. cogl/Makefile.am | 2 +- cogl/cogl-display-private.h | 5 ++ cogl/cogl-display.c | 12 ++++ cogl/cogl-display.h | 12 ++++ cogl/cogl-swap-chain-private.h | 1 + cogl/cogl-swap-chain.c | 8 +++ cogl/cogl-swap-chain.h | 5 ++ cogl/winsys/cogl-winsys-egl.c | 131 +++++++++++++++++++++++++++++++++++++++- configure.ac | 2 +- 9 files changed, 175 insertions(+), 3 deletions(-) commit ce2da7944055fd104e145da100ee3eaba259206b Author: Robert Bragg Date: Wed Mar 2 11:02:50 2011 +0000 Don't reference GL_STACK_OVERFLOW/UNDERFLOW for GLES These symbols aren't available when building with GLES so only reference them when building with OpenGL. cogl/cogl.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 31ee65784d2828b538fc2c7f37a6dca985155478 Author: Robert Bragg Date: Mon Apr 18 16:24:51 2011 +0100 winsys: Expose environment variable to choose winsys This makes it possible to override the winsys that cogl uses by setting the COGL_RENDERER environment variable e.g. to "GLX" or "EGL" cogl/cogl-renderer.c | 8 ++++++++ cogl/winsys/cogl-winsys-egl.c | 1 + cogl/winsys/cogl-winsys-glx.c | 1 + cogl/winsys/cogl-winsys-private.h | 2 ++ 4 files changed, 12 insertions(+), 0 deletions(-) commit dc7383b7148abe4bd0736042aafe3981e8313b31 Author: Robert Bragg Date: Fri Feb 25 11:29:08 2011 +0000 Add a vtable of indirection to the winsys code So that we can dynamically select what winsys backend to use at runtime we need to have some indirection to how code accesses the winsys instead of simply calling _cogl_winsys* functions that would collide if we wanted to compile more than one backend into Cogl. cogl/cogl-clutter.c | 8 +- cogl/cogl-context-private.h | 3 + cogl/cogl-context.c | 19 +++- cogl/cogl-display.c | 14 ++- cogl/cogl-framebuffer.c | 71 +++++++++--- cogl/cogl-renderer-private.h | 2 + cogl/cogl-renderer.c | 76 ++++++++++++- cogl/cogl.c | 9 ++ cogl/winsys/cogl-texture-pixmap-x11.c | 42 ++++++- cogl/winsys/cogl-winsys-egl.c | 162 +++++++++++++++------------- cogl/winsys/cogl-winsys-glx.c | 194 +++++++++++++++++++++------------ cogl/winsys/cogl-winsys-private.h | 122 ++++++++++---------- 12 files changed, 482 insertions(+), 240 deletions(-) commit d52e3f0cc2360febbbebf70262d2cf65dd46a8f3 Author: Robert Bragg Date: Tue Mar 1 14:43:43 2011 +0000 texture-pixmap-x11: Move GLX code to cogl-winsys-glx.c This moves the GLX specific code from cogl-texture-pixmap-x11.c into cogl-winsys-glx.c. If we want the winsys components to by dynamically loadable then we can't have GLX code scattered outside of cogl-winsys-glx.c. This also sets us up for supporting the EGL_texture_from_pixmap extension which is almost identical to the GLX_texture_from_pixmap extension. cogl/winsys/cogl-texture-pixmap-x11-private.h | 15 +- cogl/winsys/cogl-texture-pixmap-x11.c | 530 +----------------------- cogl/winsys/cogl-winsys-egl.c | 35 ++ cogl/winsys/cogl-winsys-glx.c | 549 +++++++++++++++++++++++++ cogl/winsys/cogl-winsys-private.h | 22 + 5 files changed, 632 insertions(+), 519 deletions(-) commit d5d11f18786b5e567f394359966a556cac7697a8 Author: Robert Bragg Date: Fri Feb 25 00:31:41 2011 +0000 Moves all EGL code down from Clutter to Cogl As was recently done for the GLX window system code, this commit moves the EGL window system code down from the Clutter backend code into a Cogl winsys. Note: currently the cogl/configure.ac is hard coded to only build the GLX winsys so currently this is only available when building Cogl as part of Clutter. cogl/Makefile.am | 9 +- cogl/cogl-context.c | 9 + cogl/cogl-context.h | 17 + cogl/winsys/cogl-winsys-egl-feature-functions.h | 57 ++ cogl/winsys/cogl-winsys-egl.c | 1048 ++++++++++++++++++++++- cogl/winsys/cogl-winsys-private.h | 5 + 6 files changed, 1133 insertions(+), 12 deletions(-) commit 8399f5e61cd63960d154e2bc1c88c6cd7eb92a8c Author: Robert Bragg Date: Fri Feb 25 00:49:07 2011 +0000 remove references to unused DRM_SURFACELESS EGL platform The "DRM_SURFACELESS" EGL platform was invented when we were adding the wayland backend to Clutter but in the end we added a dedicated backend instead of extending the EGL backend so actually the platform name isn't used. cogl/Makefile.am | 5 ----- configure.ac | 1 - 2 files changed, 0 insertions(+), 6 deletions(-) commit d832172988270013bf30145a60dd2ff24dba10ac Author: Neil Roberts Date: Thu Apr 21 16:44:15 2011 +0100 cogl-context: Initialize context->stub_winsys If Cogl is built using a full Winsys then it wasn't initialising context->stub_winsys which sometimes made it crash later on. cogl/cogl-context.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 14b6c0459fd488edeb960f5a2ec7d9f1b37b4927 Author: Neil Roberts Date: Wed Apr 20 18:43:02 2011 +0100 cogl-winsys-stub: Remove _cogl_winsys_has_feature Commit b061f737 moved _cogl_winsys_has_feature to the common winsys code so there's no need to define it in the stub winsys any more. This was breaking builds for backends using the stub winsys. cogl/winsys/cogl-winsys-stub.c | 7 ------- 1 files changed, 0 insertions(+), 7 deletions(-) commit dcd23dc22026630edcf702c4060042c15a85c2f7 Author: Neil Roberts Date: Wed Apr 20 17:50:38 2011 +0100 cogl-winsys-glx: Fix the comparison in find_onscreen_for_xid The comparison for finding onscreen framebuffers in find_onscreen_for_xid had a small thinko so that it would ignore framebuffers when the negation of the type is onscreen. This ends up doing the right thing anyway because the onscreen type has the value 0 and the offscreen type has the value 1 but presumably it would fail if we ever added any other framebuffer types. cogl/winsys/cogl-winsys-glx.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 16bfa27d43de753c2144f3b55df9254d83c3c9e4 Author: Neil Roberts Date: Fri Apr 15 16:03:19 2011 +0100 cogl-winsys: Move _cogl_winsys_has_feature to cogl-winsys.c The code for _cogl_winsys_has_feature will be identical in all of the winsys backends for the time being, so it seems to make sense to have it in the common cogl-winsys.c file. cogl/winsys/cogl-winsys-glx.c | 9 --------- cogl/winsys/cogl-winsys.c | 9 +++++++++ 2 files changed, 9 insertions(+), 9 deletions(-) commit 4a7762d6d744133ee2492900ffda6843624e2b78 Author: Neil Roberts Date: Fri Apr 15 15:39:14 2011 +0100 cogl-context: Store winsys features in an array of unsigned ints Previously the mask of available winsys features was stored in a CoglBitmask. That isn't the ideal type to use for this because it is intended for a growable array of bits so it can allocate extra memory if there are more than 31 flags set. For the winsys feature flags the highest used bit is known at compile time so it makes sense to allocate a fixed array instead. This is conceptually similar to the CoglDebugFlags which are stored in an array of integers with macros to test a bit in the array. This moves the macros used for CoglDebugFlags to cogl-flags.h and makes them more generic so they can be shared with CoglContext. cogl/Makefile.am | 1 + cogl/cogl-bitmask.h | 4 ++ cogl/cogl-context-private.h | 4 +- cogl/cogl-context.c | 4 +- cogl/cogl-debug.c | 4 +- cogl/cogl-debug.h | 23 ++-------- cogl/cogl-flags.h | 89 +++++++++++++++++++++++++++++++++++++++++ cogl/cogl-types.h | 6 +- cogl/winsys/cogl-winsys-glx.c | 36 ++++++++-------- 9 files changed, 126 insertions(+), 45 deletions(-) commit f6ae9decaa9367faaf74b8da22859ed5288b840d Author: Neil Roberts Date: Wed Apr 13 16:41:41 2011 +0100 cogl-renderer: Move the XEvent filters to be generic for all renderers Instead of having cogl_renderer_xlib_add_filter and friends there is now cogl_renderer_add_native_filter which can be used regardless of the backend. The callback function for the filter now just takes a void pointer instead of an XEvent pointer which should be interpreted differently depending on the backend. For example, on Xlib it would still be an XEvent but on Windows it could be a MSG. This simplifies the code somewhat because the _cogl_xlib_add_filter no longer needs to have its own filter list when a stub renderer is used because there is always a renderer available. cogl_renderer_xlib_handle_event has also been renamed to cogl_renderer_handle_native_event. This just forwards the event on to all of the listeners. The backend renderer is expected to register its own event filter if it wants to process the events in some way. cogl/cogl-renderer-private.h | 2 + cogl/cogl-renderer-xlib-private.h | 2 - cogl/cogl-renderer-xlib.c | 88 --------------------------------- cogl/cogl-renderer.c | 82 ++++++++++++++++++++++++++++++ cogl/cogl-renderer.h | 86 +++++++++++++++++--------------- cogl/cogl-types.h | 39 ++++++++------- cogl/cogl-xlib-private.h | 10 +--- cogl/cogl-xlib.c | 86 ++++++-------------------------- cogl/cogl-xlib.h | 2 +- cogl/winsys/cogl-texture-pixmap-x11.c | 9 ++-- cogl/winsys/cogl-winsys-glx.c | 23 +++++---- 11 files changed, 187 insertions(+), 242 deletions(-) commit cbbf76f280fc7a9b5815459f89ef78dfaed0b823 Author: Emmanuele Bassi Date: Mon Apr 18 15:53:25 2011 +0100 cogl/glx: Silence a compiler warning cogl/winsys/cogl-winsys-glx.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit d0739ca0ba4d1b8c5961f4e38021d653edd5acc0 Author: James Athey Date: Mon Apr 11 14:26:45 2011 -0400 GL_IMG_TEXTURE_NPOT extension enables TEXTURE_NPOT features on GLES Older drivers for PowerVR SGX hardware have the vendor-specific GL_IMG_TEXTURE_NPOT extension instead of the functionally-equivalent GL_OES_TEXTURE_NPOT extension. cogl/driver/gles/cogl-feature-functions-gles.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 5e530ca9bbe076abf1bc3111447d1d5825456a51 Author: Emmanuele Bassi Date: Tue Apr 12 21:02:14 2011 +0100 Silence another compiler warning cogl/winsys/cogl-winsys-glx.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) commit 9840321501f10711fdd2e0e8e96b6934a75880c9 Author: Emmanuele Bassi Date: Tue Apr 12 20:35:31 2011 +0100 Silence the compiler by removing unused variables cogl/winsys/cogl-winsys-glx.c | 9 +-------- 1 files changed, 1 insertions(+), 8 deletions(-) commit 29e5531486c2fab470d71c802d9e644e124a6ecb Author: Emmanuele Bassi Date: Tue Apr 12 20:28:36 2011 +0100 glx: Protect GLX SwapEvent symbols We need to guard the usage of symbols related to the GLX_INTEL_swap_event extension, to avoid breaking on platforms and/or versions of Mesa that do not expose that extension. cogl/winsys/cogl-winsys-glx.c | 14 +++++++++++--- 1 files changed, 11 insertions(+), 3 deletions(-) commit 2bbb0d895b6b1db2a06a8c52f0f181acc3edefbe Author: Robert Bragg Date: Tue Mar 1 23:12:18 2011 +0000 Make cogl_framebuffer_get_width/height experimental public API It's generally useful to be able to query the width and height of a framebuffer and we expect to need this in Clutter when we move the eglnative backend code into Cogl since Clutter will need to read back the fixed size of the framebuffer when realizing the stage. cogl/cogl-clip-stack.c | 2 +- cogl/cogl-framebuffer-private.h | 6 ------ cogl/cogl-framebuffer.c | 4 ++-- cogl/cogl-framebuffer.h | 8 ++++++++ cogl/cogl.c | 2 +- cogl/winsys/cogl-winsys-glx.c | 4 ++-- 6 files changed, 14 insertions(+), 12 deletions(-) commit 1928f7ec0e7b20ef25a8edf0535d467a08dd7a8e Author: Robert Bragg Date: Thu Feb 24 12:05:15 2011 +0000 backend: remove untested fruity backend This backend hasn't been used for years now and so because it is untested code and almost certainly doesn't work any more it would be a burdon to continue trying to maintain it. Considering that we are now looking at moving OpenGL window system integration code down from Clutter backends into Cogl that will be easier if we don't have to consider this backend. cogl/Makefile.am | 4 ---- cogl/winsys/cogl-winsys-fruity.c | 35 ----------------------------------- configure.ac | 2 -- 3 files changed, 0 insertions(+), 41 deletions(-) commit efb570fdaea6b9a9d5cc9382a02705cf48006811 Author: Robert Bragg Date: Thu Feb 10 02:32:11 2011 +0000 Adds the ability to build Cogl standalone This adds an autogen.sh, configure.ac and build/autotool files etc under clutter/cogl and makes some corresponding Makefile.am changes that make it possible to build and install Cogl as a standalone library. Some notable things about this are: A standalone installation of Cogl installs 3 pkg-config files; cogl-1.0.pc, cogl-gl-1.0.pc and cogl-2.0.pc. The second is only for compatibility with what clutter installed though I'm not sure that anything uses it so maybe we could remove it. cogl-1.0.pc is what Clutter would use if it were updated to build against a standalone cogl library. cogl-2.0.pc is what you would use if you were writing a standalone Cogl application. A standalone installation results in two libraries currently, libcogl.so and libcogl-pango.so. Notably we don't include a major number in the sonames because libcogl supports two major API versions; 1.x as used by Clutter and the experimental 2.x API for standalone applications. Parallel installation of later versions e.g. 3.x and beyond will be supportable either with new sonames or if we can maintain ABI then we'll continue to share libcogl.so. The headers are similarly not installed into a directory with a major version number since the same headers are shared to export the 1.x and 2.x APIs (The only difference is that cogl-2.0.pc ensures that -DCOGL_ENABLE_EXPERIMENTAL_2_0_API is used). Parallel installation of later versions is not precluded though since we can either continue sharing or later add a major version suffix. Makefile.am | 6 + autogen.sh | 73 ++++++ build/autotools/Makefile.am.enums | 51 ++++ build/autotools/Makefile.am.silent | 19 ++ build/autotools/as-compiler-flag.m4 | 62 +++++ build/autotools/as-linguas.m4 | 24 ++ build/autotools/introspection.m4 | 94 +++++++ cogl/Makefile.am | 96 +++++--- cogl/cogl-1.0-clutter.pc.in | 17 ++ cogl/cogl-1.0.pc.in | 13 + cogl/cogl.pc.in | 18 +- configure.ac | 462 +++++++++++++++++++++++++++++++++++ pango/Makefile.am | 27 ++- po/ChangeLog | 12 + po/Makevars | 41 +++ po/POTFILES.in | 1 + po/Rules-quot | 47 ++++ po/boldquot.sed | 10 + po/en@boldquot.header | 25 ++ po/en@quot.header | 22 ++ po/insert-header.sin | 23 ++ po/quot.sed | 6 + po/remove-potcdate.sin | 19 ++ 23 files changed, 1125 insertions(+), 43 deletions(-) commit d40cdfa3e1c0fd43660002418ce5594b81d80bc1 Author: Robert Bragg Date: Fri Nov 5 12:28:33 2010 +0000 Moves all GLX code down from Clutter to Cogl This migrates all the GLX window system code down from the Clutter backend code into a Cogl winsys. Moving OpenGL window system binding code down from Clutter into Cogl is the biggest blocker to having Cogl become a standalone 3D graphics library, so this is an important step in that direction. cogl/Makefile.am | 44 +- cogl/cogl-clutter.c | 14 + cogl/cogl-clutter.h | 10 + cogl/cogl-context-private.h | 34 +- cogl/cogl-context.c | 104 +- cogl/cogl-context.h | 7 +- cogl/cogl-debug.h | 1 + cogl/cogl-display-glx-private.h | 57 + cogl/cogl-display-xlib-private.h | 35 + cogl/cogl-display.c | 5 + cogl/cogl-display.h | 12 +- cogl/cogl-feature-private.c | 5 +- cogl/cogl-feature-private.h | 20 +- cogl/cogl-framebuffer-private.h | 39 +- cogl/cogl-framebuffer.c | 235 ++++- cogl/cogl-framebuffer.h | 109 ++ cogl/cogl-internal.h | 102 +-- cogl/cogl-journal-private.h | 1 + cogl/cogl-private.h | 6 + cogl/cogl-renderer-glx-private.h | 61 ++ cogl/cogl-renderer-x11-private.h | 32 + cogl/cogl-renderer-xlib-private.h | 78 ++ cogl/cogl-renderer-xlib.c | 288 ++++++ cogl/cogl-renderer.c | 23 + cogl/cogl-types.h | 87 ++- cogl/cogl-util.c | 1 - cogl/cogl-xlib-private.h | 82 ++ cogl/cogl-xlib.c | 238 +++++ cogl/cogl-xlib.h | 84 ++ cogl/cogl.c | 10 +- cogl/cogl.h | 52 +- cogl/driver/gl/cogl-context-driver-gl.h | 53 + cogl/driver/gl/cogl-gl.c | 40 +- cogl/driver/gles/cogl-context-driver-gles.h | 52 + cogl/driver/gles/cogl-gles.c | 46 +- cogl/winsys/cogl-context-winsys.c | 152 --- cogl/winsys/cogl-context-winsys.h | 118 --- cogl/winsys/cogl-texture-pixmap-x11.c | 111 ++- cogl/winsys/cogl-winsys-feature-functions.h | 45 - cogl/winsys/cogl-winsys-glx-feature-functions.h | 105 ++ cogl/winsys/cogl-winsys-glx.c | 1262 ++++++++++++++++++++++- cogl/winsys/cogl-winsys-private.h | 88 ++ cogl/winsys/cogl-winsys-stub.c | 114 ++ cogl/winsys/cogl-winsys-xlib.c | 170 --- cogl/winsys/cogl-winsys-xlib.h | 66 -- cogl/winsys/cogl-winsys.c | 36 + 46 files changed, 3428 insertions(+), 906 deletions(-) commit bcd97f35ead2efc48b905e43ed981cd4d5850229 Author: Robert Bragg Date: Fri Feb 25 17:06:50 2011 +0000 Adds renderer,display,onscreen-template and swap-chain stubs As part of the process of splitting Cogl out as a standalone graphics API we need to introduce some API concepts that will allow us to initialize a new CoglContext when Clutter isn't there to handle that for us... The new objects roughly in the order that they are (optionally) involved in constructing a context are: CoglRenderer, CoglOnscreenTemplate, CoglSwapChain and CoglDisplay. Conceptually a CoglRenderer represents a means for rendering. Cogl supports rendering via OpenGL or OpenGL ES 1/2.0 and those APIs are accessed through a number of different windowing APIs such as GLX, EGL, SDL or WGL and more. Potentially in the future Cogl could render using D3D or even by using libdrm and directly banging the hardware. All these choices are wrapped up in the configuration of a CoglRenderer. Conceptually a CoglDisplay represents a display pipeline for a renderer. Although Cogl doesn't aim to provide a detailed abstraction of display hardware, on some platforms we can give control over multiple display planes (On TV platforms for instance video content may be on one plane and 3D would be on another so a CoglDisplay lets you select the plane up-front.) Another aspect of CoglDisplay is that it lets us negotiate a display pipeline that best supports the type of CoglOnscreen framebuffers we are planning to create. For instance if you want transparent CoglOnscreen framebuffers then we have to be sure the display pipeline wont discard the alpha component of your framebuffers. Or if you want to use double/tripple buffering that requires support from the display pipeline. CoglOnscreenTemplate and CoglSwapChain are how we describe our default CoglOnscreen framebuffer configuration which can affect the configuration of the display pipeline. The default/simple way we expect most CoglContexts to be constructed will be via something like: if (!cogl_context_new (NULL, &error)) g_error ("Failed to construct a CoglContext: %s", error->message); Where that NULL is for an optional "display" parameter and NULL says to Cogl "please just try to do something sensible". If you want some more control though you can manually construct a CoglDisplay something like: display = cogl_display_new (NULL, NULL); cogl_gdl_display_set_plane (display, plane); if (!cogl_display_setup (display, &error)) g_error ("Failed to setup a CoglDisplay: %s", error->message); And in a similar fashion to cogl_context_new() you can optionally pass a NULL "renderer" and/or a NULL "onscreen template" so Cogl will try to just do something sensible. If you need to change the CoglOnscreen defaults you can provide a template something like: chain = cogl_swap_chain_new (); cogl_swap_chain_set_has_alpha (chain, TRUE); cogl_swap_chain_set_length (chain, 3); onscreen_template = cogl_onscreen_template_new (chain); cogl_onscreen_template_set_pixel_format (onscreen_template, COGL_PIXEL_FORMAT_RGB565); display = cogl_display_new (NULL, onscreen_template); if (!cogl_display_setup (display, &error)) g_error ("Failed to setup a CoglDisplay: %s", error->message); cogl/Makefile.am | 16 ++++ cogl/cogl-context.c | 44 +++++++-- cogl/cogl-display-private.h | 43 +++++++++ cogl/cogl-display.c | 106 ++++++++++++++++++++++ cogl/cogl-onscreen-template-private.h | 37 ++++++++ cogl/cogl-onscreen-template.c | 62 +++++++++++++ cogl/cogl-onscreen-template.h | 48 ++++++++++ cogl/cogl-renderer-private.h | 43 +++++++++ cogl/cogl-renderer.c | 106 ++++++++++++++++++++++ cogl/cogl-renderer.h | 158 +++++++++++++++++++++++++++++++++ cogl/cogl-swap-chain-private.h | 37 ++++++++ cogl/cogl-swap-chain.c | 66 ++++++++++++++ cogl/cogl-swap-chain.h | 46 ++++++++++ 13 files changed, 802 insertions(+), 10 deletions(-) commit e80a2b9b2fec899c7a2c20dd67f2493485305a1c Author: Robert Bragg Date: Tue Feb 22 20:08:16 2011 +0000 rename winsys files to be more consistent This tries to make the naming style of files under cogl/winsys/ consistent with other cogl source files. In particular private header files didn't have a '-private' infix. cogl/Makefile.am | 22 ++-- cogl/winsys/cogl-egl.c | 45 --------- cogl/winsys/cogl-fruity.c | 35 ------- cogl/winsys/cogl-glx.c | 78 --------------- cogl/winsys/cogl-osx.c | 35 ------- cogl/winsys/cogl-sdl.c | 35 ------- cogl/winsys/cogl-texture-pixmap-x11.c | 2 +- cogl/winsys/cogl-win32.c | 35 ------- cogl/winsys/cogl-winsys-egl.c | 45 +++++++++ cogl/winsys/cogl-winsys-fruity.c | 35 +++++++ cogl/winsys/cogl-winsys-glx.c | 78 +++++++++++++++ cogl/winsys/cogl-winsys-osx.c | 35 +++++++ cogl/winsys/cogl-winsys-private.h | 30 ++++++ cogl/winsys/cogl-winsys-sdl.c | 35 +++++++ cogl/winsys/cogl-winsys-win32.c | 35 +++++++ cogl/winsys/cogl-winsys-xlib.c | 170 +++++++++++++++++++++++++++++++++ cogl/winsys/cogl-winsys-xlib.h | 66 +++++++++++++ cogl/winsys/cogl-winsys.h | 30 ------ cogl/winsys/cogl-xlib.c | 170 --------------------------------- cogl/winsys/cogl-xlib.h | 66 ------------- 20 files changed, 541 insertions(+), 541 deletions(-) commit 9f19244971d06b28730697d12ea9f73558d3354c Author: Robert Bragg Date: Tue Feb 22 18:25:29 2011 +0000 Add temporary cogl-clutter.h to aid splitting out Cogl This gives us a way to clearly track the internal Cogl API that Clutter depends on. The aim is to split Cogl out from Clutter into a standalone 3D graphics API and eventually we want to get rid of any private interfaces for Clutter so its useful to have a handle on that task. Actually it's not as bad as I was expecting though. cogl/Makefile.am | 6 ++- cogl/cogl-clutter.c | 59 +++++++++++++++++++++++++++++++++++++++ cogl/cogl-clutter.h | 47 +++++++++++++++++++++++++++++++ cogl/cogl-framebuffer-private.h | 4 ++ cogl/cogl-framebuffer.c | 9 ++---- cogl/cogl-private.h | 3 ++ cogl/cogl.h | 3 -- 7 files changed, 120 insertions(+), 11 deletions(-) commit 0b45110302a025145ce928dfbe3d21a6ab7f9ad3 Author: Robert Bragg Date: Thu Mar 10 21:33:31 2011 +0000 framebuffer: expose experimental cogl_get_draw_framebuffer This renames the two internal functions _cogl_get_draw/read_buffer as cogl_get_draw_framebuffer and _cogl_get_read_framebuffer. The former is now also exposed as experimental API. cogl/cogl-attribute.c | 8 +++--- cogl/cogl-clip-stack.c | 10 ++++---- cogl/cogl-clip-state.c | 12 +++++----- cogl/cogl-framebuffer-private.h | 5 +--- cogl/cogl-framebuffer.c | 24 ++++++++++---------- cogl/cogl-journal.c | 10 ++++---- cogl/cogl-matrix-stack.c | 2 +- cogl/cogl-primitives.c | 4 +- cogl/cogl-texture-2d.c | 4 +- cogl/cogl-texture.c | 2 +- cogl/cogl.c | 46 +++++++++++++++++++------------------- cogl/cogl.h | 5 +++- cogl/cogl2-clip-state.c | 2 +- cogl/cogl2-path.c | 6 ++-- 14 files changed, 70 insertions(+), 70 deletions(-) commit aa1e45267b2edf48f8d112a75ddd9564a644db19 Author: Robert Bragg Date: Tue Feb 22 17:58:47 2011 +0000 framebuffer: track context as CoglFramebuffer member The long term goal with the Cogl API is that we will get rid of the default global context. As a step towards this, this patch tracks a reference back to the context in each CoglFramebuffer so in a lot of cases we can avoid using the _COGL_GET_CONTEXT macro. cogl/cogl-framebuffer.c | 57 ++++++++++++++++++++++++++++------------------- 1 files changed, 34 insertions(+), 23 deletions(-) commit 5c7ce809c19b690773f3d0da6e47eb24d98480db Author: Robert Bragg Date: Tue Feb 22 17:30:54 2011 +0000 remove unused _cogl_features_init prototype There is no corresponding implementation of _cogl_features_init any more so it was simply an oversight that the prototype wasn't removed when the implementation was removed. cogl/cogl-internal.h | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-) commit 7fc6613fe92dddc7cf4635cb9c03cbf71964b179 Author: Robert Bragg Date: Tue Feb 22 17:13:56 2011 +0000 Remove unused _cogl_swap_buffers_notify Recently _cogl_swap_buffers_notify was added (in 142b229c5c26) so that Cogl would be notified when Clutter performs a swap buffers request for a given onscreen framebuffer. It was expected this would be required for the recent cogl_read_pixel optimization that was implemented (ref 1bdb0e6e98db) but in the end it wasn't used. Since it wasn't used in the end this patch removes the API. cogl/cogl-framebuffer-private.h | 3 --- cogl/cogl-framebuffer.c | 5 ----- cogl/cogl.c | 11 ----------- cogl/cogl.h | 3 --- 4 files changed, 0 insertions(+), 22 deletions(-) commit c41581853742da483ecf31ad370d9be23b4bca7c Author: Robert Bragg Date: Fri Nov 5 00:34:37 2010 +0000 cogl: consolidate _create_context_driver + _features_init This moves the functionality of _cogl_create_context_driver from driver/{gl,gles}/cogl-context-driver-{gl,gles}.c into driver/{gl,gles}/cogl-{gl,gles}.c as a static function called initialize_context_driver. cogl-context-driver-{gl,gles}.[ch] have now been removed. cogl/Makefile.am | 4 -- cogl/cogl-context.c | 6 +-- cogl/driver/gl/cogl-context-driver-gl.c | 39 -------------------- cogl/driver/gl/cogl-context-driver-gl.h | 53 --------------------------- cogl/driver/gl/cogl-gl.c | 36 +++++++++++++------ cogl/driver/gles/cogl-context-driver-gles.c | 40 -------------------- cogl/driver/gles/cogl-context-driver-gles.h | 52 -------------------------- cogl/driver/gles/cogl-gles.c | 28 +++++++++++---- 8 files changed, 48 insertions(+), 210 deletions(-) commit e9b1ca0165f450c1f893e73d425f98a7b091f9b4 Author: Robert Bragg Date: Fri Nov 5 00:00:25 2010 +0000 cogl: Adds experimental cogl_context_new() API This adds a new experimental function (you need to define COGL_ENABLE_EXPERIMENTAL_API to access it) which takes us towards being able to have a standalone Cogl API. This is really a minor aesthetic change for now since all the GL context creation code still lives in Clutter but it's a step forward none the less. Since our current designs introduce a CoglDisplay object as something that would be passed to the context constructor this provides a stub cogl-display.h with CoglDisplay typedef. _cogl_context_get_default() which Clutter uses to access the Cogl context has been modified to use cogl_context_new() to initialize the default context. There is one rather nasty hack used in this patch which is that the implementation of cogl_context_new() has to forcibly make the allocated context become the default context because currently all the code in Cogl assumes it can access the context using _COGL_GET_CONTEXT including code used to initialize the context. cogl/Makefile.am | 1 + cogl/cogl-context-private.h | 7 +- cogl/cogl-context.c | 293 +++++++++++++++++++++++-------------------- cogl/cogl-context.h | 62 +++++++++ cogl/cogl-display.h | 78 ++++++++++++ cogl/cogl.h | 1 + 6 files changed, 305 insertions(+), 137 deletions(-) commit fdbc7417700e7f416cb330288e1011b40a15c6b8 Author: Robert Bragg Date: Thu Nov 4 22:25:52 2010 +0000 cogl: rename cogl-context.h cogl-context-private.h Since we plan to add public cogl_context_* API we need to rename the current cogl-context.h which contains private member details. cogl/Makefile.am | 2 +- cogl/cogl-atlas-texture.c | 2 +- cogl/cogl-atlas.c | 2 +- cogl/cogl-attribute.c | 2 +- cogl/cogl-blend-string.c | 2 +- cogl/cogl-blit.c | 2 +- cogl/cogl-buffer.c | 2 +- cogl/cogl-clip-stack.c | 2 +- cogl/cogl-clip-state.c | 2 +- cogl/cogl-context-private.h | 251 +++++++++++++++++++++++++++ cogl/cogl-context.c | 2 +- cogl/cogl-context.h | 251 --------------------------- cogl/cogl-feature-private.c | 2 +- cogl/cogl-framebuffer.c | 2 +- cogl/cogl-indices.c | 2 +- cogl/cogl-journal.c | 2 +- cogl/cogl-material-compat.c | 2 +- cogl/cogl-matrix-stack.c | 2 +- cogl/cogl-path.c | 2 +- cogl/cogl-pipeline-fragend-arbfp.c | 2 +- cogl/cogl-pipeline-fragend-fixed.c | 2 +- cogl/cogl-pipeline-fragend-glsl.c | 2 +- cogl/cogl-pipeline-opengl.c | 2 +- cogl/cogl-pipeline-progend-glsl.c | 2 +- cogl/cogl-pipeline-vertend-fixed.c | 2 +- cogl/cogl-pipeline-vertend-glsl.c | 2 +- cogl/cogl-pipeline.c | 2 +- cogl/cogl-pixel-array.c | 2 +- cogl/cogl-primitives.c | 2 +- cogl/cogl-program.c | 2 +- cogl/cogl-shader.c | 2 +- cogl/cogl-sub-texture.c | 2 +- cogl/cogl-texture-2d-sliced.c | 2 +- cogl/cogl-texture-2d.c | 2 +- cogl/cogl-texture-3d.c | 2 +- cogl/cogl-texture-rectangle.c | 2 +- cogl/cogl-texture.c | 2 +- cogl/cogl-vertex-buffer.c | 2 +- cogl/cogl.c | 2 +- cogl/cogl2-path.c | 2 +- cogl/driver/gl/cogl-context-driver-gl.c | 2 +- cogl/driver/gl/cogl-gl.c | 2 +- cogl/driver/gl/cogl-texture-driver-gl.c | 2 +- cogl/driver/gles/cogl-context-driver-gles.c | 2 +- cogl/driver/gles/cogl-gles.c | 2 +- cogl/driver/gles/cogl-texture-driver-gles.c | 2 +- cogl/winsys/cogl-context-winsys.c | 2 +- cogl/winsys/cogl-texture-pixmap-x11.c | 2 +- cogl/winsys/cogl-xlib.c | 2 +- 49 files changed, 298 insertions(+), 298 deletions(-) commit 16a6c77089f4e0db70a730d8615fd6b2c063b9e4 Author: Neil Roberts Date: Wed Apr 6 15:24:33 2011 +0100 cogl-pango-glyph-cache: Fix the flags passed to cogl_atlas_new In 047227fb cogl_atlas_new was changed so that it can take a flags parameter to specify whether to clear the new atlases and whether to copy images to the new atlas after reorganisation. This was done so that the atlas code could be shared with the glyph cache. At some point during the development of this patch the flag was just a single boolean instead and this is accidentally how it is used from the glyph cache. The glyph cache therefore passes 'TRUE' as the set of flags which means it will only get the 'clear' flag and not the 'disable-migration' flag. When the glyph cache gets full it will therefore try to copy the texture to the new atlas as well as redrawing them with cairo. This causes problems because the glyph cache needs to work in situations where there is no FBO support. pango/cogl-pango-glyph-cache.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 472e8e8f4e325f1839b42b10dd38a4828e559909 Author: Neil Roberts Date: Tue Apr 5 17:30:29 2011 +0100 cogl-pipeline: Be careful not to take ownership of root layer In _cogl_pipeline_prune_empty_layer_difference if the layer's parent has no owner then it just takes ownership of it. However this could theoretically end up taking ownership of the root layer because according to the comment above in the same function that should never have an owner. This patch just adds an extra check to ensure that the unowned layer has a parent. http://bugzilla.clutter-project.org/show_bug.cgi?id=2588 cogl/cogl-pipeline.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) commit 7de36552982df25d6a516dd23ebc19c832106fee Author: Robert Bragg Date: Tue Apr 5 17:01:24 2011 +0100 pipeline: reclaim ownership if reverting to layer ancestor In _cogl_pipeline_prune_empty_layer_difference if we are reverting to the immediate parent of an empty/redundant layer then it is not enough to simply add a reference to the pipeline's ->layer_differences list without also updating parent_layer->owner to point back to its new owner. This oversight was leading us to break the invariable that all layers referenced in layer_differences have an owner and was also causing us to break another invariable whereby after calling _cogl_pipeline_layer_pre_change_notify the returned layer must always be owned by the given 'required_owner'. http://bugzilla.clutter-project.org/show_bug.cgi?id=2588 cogl/cogl-pipeline.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 12b622a32067fefc16b970cbefea7395c6452a14 Author: Emmanuele Bassi Date: Mon Apr 4 14:42:36 2011 +0100 offscreen: Plug a leak in an error path When creating a CoglOffscreen we take a reference on the texture handle, but in case of error we never release it. We should take that reference only on success. http://bugzilla.clutter-project.org/show_bug.cgi?id=2620 cogl/cogl-framebuffer.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) commit bb79fb43e5d7afdd4b2c2e2e547dd64949da799c Author: Emmanuele Bassi Date: Mon Mar 21 12:34:41 2011 +0000 Merge remote-tracking branch 'elliot/cookbook-effects-basic' * elliot/cookbook-effects-basic: docs: Remove checks for whether an effect is disabled docs: Add recipe about implementing a ClutterEffect docs: Add example of setting background color with ClutterEffect docs: Add example of a border added through ClutterEffect commit f38b7a78fb6e811a68314cd8f0a1909ed29a39db Author: Neil Roberts Date: Mon Mar 14 17:58:31 2011 +0000 cogl: Use GHookList instead of CoglCallbackList glib already has a data type to manage a list of callbacks called a GHookList so we might as well use it instead of maintaining Cogl's own type. The glib version may be slightly more efficient because it avoids using a GList and instead encodes the prev and next pointers directly in the GHook structure. It also has more features than CoglCallbackList. cogl/Makefile.am | 2 - cogl/cogl-atlas.c | 58 ++++++++++++++------- cogl/cogl-atlas.h | 13 ++--- cogl/cogl-callback-list.c | 107 ---------------------------------------- cogl/cogl-callback-list.h | 58 --------------------- pango/cogl-pango-glyph-cache.c | 26 ++++++--- pango/cogl-pango-glyph-cache.h | 5 +- pango/cogl-pango-render.c | 4 +- 8 files changed, 65 insertions(+), 208 deletions(-) commit 034d2730301360fa4763983f9bd0ff41630a746c Author: Robert Bragg Date: Thu Mar 10 18:51:51 2011 +0000 culling: Don't cull actors not being painted on the stage Previously we were applying the culling optimization to any actor painted without considering that we may be painting to an offscreen framebuffer where the stage clip isn't applicable. For now we simply expose a getter for the current draw framebuffer and we can assume that a return value of NULL corresponds to the stage. Note: This will need to be updated as stages start to be backed by real CoglFramebuffer objects and so we won't get NULL in those cases. cogl/cogl.h | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 30fa4e1a201dd6343371fe129bd1e7b68a9b036e Author: Jasper St. Pierre Date: Wed Mar 2 12:45:25 2011 -0500 cogl-clip-state: Adapt to experimental cogl2 API. The current clip state implementation couldn't be used in conjunction with the CoglPath experimental API. http://bugzilla.clutter-project.org/show_bug.cgi?id=2594 Signed-off-by: Neil Roberts cogl/Makefile.am | 9 +++++- cogl/cogl-clip-state-private.h | 53 +++++++++++++++++++++++++++++++++++++++ cogl/cogl-clip-state.c | 20 +++----------- cogl/cogl-clip-state.h | 39 +++++++++++++--------------- cogl/cogl-framebuffer-private.h | 2 +- cogl/cogl.h | 15 +--------- cogl/cogl2-clip-state.c | 49 ++++++++++++++++++++++++++++++++++++ cogl/cogl2-clip-state.h | 52 ++++++++++++++++++++++++++++++++++++++ 8 files changed, 186 insertions(+), 53 deletions(-) commit cbe9d758d5bf98c2fcab9914fc4fe7b2e0711872 Author: Neil Roberts Date: Wed Mar 9 17:46:23 2011 +0000 cogl-path: Optimise paths that are just a rectangle Drawing and clipping to paths is generally quite expensive because the geometry has to be tessellated into triangles in a single VBO which breaks up the journal batching. If we can detect when the path contains just a single rectangle then we can instead divert to calling cogl_rectangle which will take advantage of the journal, or by pushing a rectangle clip which usually ends up just using the scissor. This patch adds a boolean to each path to mark when it is a rectangle. It gets cleared whenever a node is added or gets set to TRUE whenever cogl2_path_rectangle is called. This doesn't try to catch cases where a rectangle is composed by cogl_path_line_to and cogl_path_move_to commands. cogl/cogl-clip-stack.c | 32 ++++++++++++++++++-------- cogl/cogl-path-private.h | 11 +++++++++ cogl/cogl2-path.c | 55 ++++++++++++++++++++++++++++++++++++++------- 3 files changed, 79 insertions(+), 19 deletions(-) commit 9b7f362ea456f03688a693b11d3c39ecc9b6e174 Author: Neil Roberts Date: Tue Mar 8 12:53:41 2011 +0000 cogl-shader-boilerplate: Specify default precision earlier In 9ff04e8a99 the builtin uniforms were moved to the common shader boilerplate. However the common boilerplate is positioned before the default precision specifier on GLES2 so it would fail to compile because the uniforms end up with no precision in the fragment shader. This patch just moves the precision specifier to above the common boilerplate. cogl/cogl-shader-boilerplate.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit d4a5d70ee0b2b77007957f825c42ff3931b4cbfd Author: Robert Bragg Date: Tue Feb 8 10:37:15 2011 +0000 util: optimize _clutter_util_fully_transform_vertices Instead of unconditionally combining the modelview and projection matrices and then iterating each of the vertices to call cogl_matrix_transform_point for each one in turn we now only combine the matrices if there are more than 4 vertices (with less than 4 vertices its less work to transform them separately) and we use the new cogl_vertex_{transform,project}_points APIs which can hopefully vectorize the transformations. Finally the perspective divide and viewport scale is done in a separate loop at the end and we don't do the spurious perspective divide and viewport scale for the z component. cogl/cogl-matrix.c | 14 +++++++------- cogl/cogl-matrix.h | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) commit 962b84ed56877237344c0f9f8079585392ed5580 Author: Robert Bragg Date: Tue Feb 8 15:21:41 2011 +0000 matrix: adds 2d view transform conveniences This adds two new experimental functions to cogl-matrix.c: cogl_matrix_view_2d_in_perspective and cogl_matrix_view_2d_in_frustum which can be used to setup a view transform that maps a 2D coordinate system (0,0) top left and (width,height) bottom right to the current viewport. Toolkits such as Clutter that want to mix 2D and 3D drawing can use these APIs to position a 2D coordinate system at an arbitrary depth inside a 3D perspective projected viewing frustum. cogl/cogl-matrix.c | 57 +++++++++++++++++++++++++++++++++++++ cogl/cogl-matrix.h | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 137 insertions(+), 0 deletions(-) commit bc372d27346d22a31cf33edaa3f0c1ad91b989e3 Author: Robert Bragg Date: Tue Feb 1 16:51:58 2011 +0000 viewport: consistently use floats for viewports OpenGL < 4.0 only supports integer based viewports and internally we have a mixture of code using floats and integers for viewports. This patch switches all viewports throughout clutter and cogl to be represented using floats considering that in the future we may want to take advantage of floating point viewports with modern hardware/drivers. cogl/cogl-framebuffer-private.h | 26 +++++++++++++------------- cogl/cogl-framebuffer.c | 23 ++++++++++++----------- cogl/cogl-journal.c | 2 +- cogl/cogl-matrix-mesa.c | 8 +++++--- cogl/cogl-matrix-mesa.h | 2 +- cogl/cogl-texture.c | 12 ++++++------ cogl/cogl.c | 7 +------ cogl/cogl.h | 3 --- 8 files changed, 39 insertions(+), 44 deletions(-) commit b3d9f313d47f1b604a9ecc9c0ada2b1793a87157 Author: Robert Bragg Date: Thu Mar 3 23:19:30 2011 +0000 util: tune point_in_poly test for polys in screen coords This makes a change to the original point_in_poly algorithm from: http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html The aim was to tune the test so that tests against screen aligned rectangles are more resilient to some in-precision in how we transformed that rectangle into screen coordinates. In particular gnome-shell was finding that for some stage sizes then row 0 of the stage would become a dead zone when going through the software picking fast-path and this was because the y position of screen aligned rectangles could end up as something like 0.00024 and the way the algorithm works it doesn't have any epsilon/fuz factor to consider that in-precision. We've avoided introducing an epsilon factor to the comparisons since we feel there's a risk of changing some semantics in ways that might not be desirable. One of those is that if you transform two polygons which share an edge and test a point close to that edge then this algorithm will currently give a positive result for only one polygon. Another concern is the way this algorithm resolves the corner case where the horizontal ray being cast to count edge crossings may cross directly through a vertex. The solution is based on the "idea of Simulation of Simplicity" and "pretends to shift the ray infinitesimally down so that it either clearly intersects, or clearly doesn't touch". I'm not familiar with the idea myself so I expect a misplaced epsilon is likely to break that aspect of the algorithm. The simple solution this patch applies is to pixel align the polygon vertices which should eradicate most noise due to in-precision. https://bugzilla.gnome.org/show_bug.cgi?id=641197 cogl/cogl-journal.c | 4 +- cogl/cogl-point-in-poly-private.h | 10 ++++---- cogl/cogl-point-in-poly.c | 41 ++++++++++++++++++++++++++++++++---- 3 files changed, 43 insertions(+), 12 deletions(-) commit 25db8d06530746cf84557e8bde47f235a1a85170 Author: Neil Roberts Date: Thu Feb 24 18:42:47 2011 +0000 cogl-blit: Disable blending when using texture render When using a pipeline and the journal to blit images between framebuffers, it should disable blending. Otherwise it will end up blending the source texture with uninitialised garbage in the destination texture. cogl/cogl-blit.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit 54cdb0f59f54f0861bfb6dffbe0fe4acfd9e91d8 Author: Emmanuele Bassi Date: Mon Feb 21 18:09:06 2011 +0000 Merge remote-tracking branch 'elliot/cookbook-effects-custom-deform' * elliot/cookbook-effects-custom-deform: docs: Add effects chapter, with introduction and first recipe commit c91f102232b9af4dafc7dfbec49405a99bec9bc2 Author: Emmanuele Bassi Date: Sat Feb 19 16:43:46 2011 +0000 cogl: Remove unused variables cogl/cogl-texture-2d-sliced.c | 4 ---- 1 files changed, 0 insertions(+), 4 deletions(-) commit 8f8b05f0e5f6bd3a82abc9355397ef0640934e68 Author: Neil Roberts Date: Thu Feb 17 13:11:34 2011 +0000 cogl-atlas-texture: Don't let textures be destroyed during migration If an atlas texture's last reference is held by the journal or by the last flushed pipeline then if an atlas migration is started it can cause a crash. This is because the atlas migration will cause a journal flush and can sometimes change the current pipeline which means that the texture would be destroyed during migration. This patch adds an extra 'post_reorganize' callback to the existing 'reorganize' callback (which is now renamed to 'pre_reorganize'). The pre_reorganize callback is now called before the atlas grabs a list of the current textures instead of after so that it doesn't matter if the journal flush destroys some of those textures. The pre_reorganize callback for CoglAtlasTexture grabs a reference to all of the textures so that they can not be destroyed when the migration changes the pipeline. In the post_reorganize callback the reference is removed again. http://bugzilla.clutter-project.org/show_bug.cgi?id=2538 cogl/cogl-atlas-texture.c | 80 ++++++++++++++++++++++++++++++++++++---- cogl/cogl-atlas.c | 54 ++++++++++++++++++++------- cogl/cogl-atlas.h | 11 +++-- pango/cogl-pango-glyph-cache.c | 2 +- 4 files changed, 120 insertions(+), 27 deletions(-) commit b77276c99ab70fa6d761edd96efebbe927d6814f Author: Neil Roberts Date: Tue Feb 15 12:50:15 2011 +0000 cogl-atlas: Fix a compiler warning when Cogl debug is disabled When Cogl debugging is disabled then the 'waste' variable is not used so it throws a compiler warning. This patch removes the variable and the value is calculated directly as the parameter to COGL_NOTE. cogl/cogl-atlas.c | 9 ++++----- 1 files changed, 4 insertions(+), 5 deletions(-) commit 167c8aac1b0c99e647939d96fefb97a025356be9 Author: Neil Roberts Date: Tue Feb 15 12:44:40 2011 +0000 cogl-debug: Don't define _cogl_debug_flags when debugging disabled _cogl_debug_flags isn't used when COGL_DEBUG is not defined so there's no need to declare it. Based on a patch by Fan, Chun-wei http://bugzilla.clutter-project.org/show_bug.cgi?id=2561 cogl/cogl-debug.c | 4 ---- 1 files changed, 0 insertions(+), 4 deletions(-) commit dd7b1326eb1eaca686eaff186c2e5c4fb8464465 Author: Neil Roberts Date: Tue Feb 15 12:43:26 2011 +0000 cogl: Avoid pointer arithmetic on void* pointers Some code was doing pointer arithmetic on the return value from cogl_buffer_map which is void* pointer. This is a GCC extension so we should try to avoid it. This patch adds casts to guint8* where appropriate. Based on a patch by Fan, Chun-wei. http://bugzilla.clutter-project.org/show_bug.cgi?id=2561 cogl/cogl-attribute.c | 4 ++-- cogl/cogl-journal.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit c4cfdd59d3bbf7045d5747263fb52d05daa45335 Author: Emmanuele Bassi Date: Tue Feb 15 12:31:12 2011 +0000 Fix ISO C90 compiler warnings in Cogl Mixing declarations and statements and unused variables. cogl/cogl-attribute.c | 14 +++++++--- cogl/cogl-bitmap-pixbuf.c | 67 ++++++++++++++++++++++++++++++--------------- cogl/cogl-blend-string.c | 4 +- 3 files changed, 57 insertions(+), 28 deletions(-) commit c8ddb3b55a0a0f46f1c3068fd32dba3f4b198979 Author: Neil Roberts Date: Thu Jan 20 17:45:47 2011 +0000 cogl-atlas: Try 4 different approaches for migrating textures Instead of directly banging GL to migrate textures the atlas now uses the CoglFramebuffer API. It will use one of four approaches; it can set up two FBOs and use _cogl_blit_framebuffer to copy between them; it can use a single target fbo and then render the source texture to the FBO using a Cogl draw call; it can use a single FBO and call glCopyTexSubImage2D; or it can fallback to reading all of the texture data back to system memory and uploading it again with a sub texture update. Previously GL calls were used directly because Cogl wasn't able to create a framebuffer without a stencil and depth buffer. However there is now an internal version of cogl_offscreen_new_to_texture which takes a set of flags to disable the two buffers. The code for blitting has now been moved into a separate file called cogl-blit.c because it has become quite long and it may be useful outside of the atlas at some point. The 4 different methods have a fixed order of preference which is: * Texture render between two FBOs * glBlitFramebuffer * glCopyTexSubImage2D * glGetTexImage + glTexSubImage2D Once a method is succesfully used it is tried first for all subsequent blits. The default default can be overridden by setting the environment variable COGL_ATLAS_DEFAULT_BLIT_MODE to one of the following values: * texture-render * framebuffer * copy-tex-sub-image * get-tex-data cogl/Makefile.am | 2 + cogl/cogl-atlas.c | 185 ++---------------------- cogl/cogl-blit.c | 389 +++++++++++++++++++++++++++++++++++++++++++++++++++ cogl/cogl-blit.h | 89 ++++++++++++ cogl/cogl-context.c | 4 + cogl/cogl-context.h | 1 + 6 files changed, 501 insertions(+), 169 deletions(-) commit 5ca053a3c151078ec7db1f18bc7ae537b6952ece Author: Neil Roberts Date: Thu Feb 10 18:24:14 2011 +0000 cogl-texture-2d: Add _cogl_is_texture_2d to the private header This adds a declaration for _cogl_is_texture_2d to the private header so that it can be used in cogl-blit.c to determine if the target texture is a simple 2D texture. cogl/cogl-texture-2d-private.h | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit bc86db1057f6ceb9cecd72be085bab7198136f29 Author: Neil Roberts Date: Thu Feb 10 18:22:27 2011 +0000 cogl-texture-2d: Add an internal wrapper around glCopyTexSubImage2D This adds a function called _cogl_texture_2d_copy_from_framebuffer which is a simple wrapper around glCopyTexSubImage2D. It is currently specific to the texture 2D backend. cogl/cogl-texture-2d-private.h | 22 ++++++++++++++++++++++ cogl/cogl-texture-2d.c | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 0 deletions(-) commit 9d242b62a9e0ace8437fb6f637d4e2efe344308d Author: Neil Roberts Date: Sat Feb 5 11:19:52 2011 +0000 cogl-framebuffer: Add _cogl_blit_framebuffer This adds the _cogl_blit_framebuffer internal function which is a wrapper around glBlitFramebuffer. The API is changed from the GL version of the function to reflect the limitations provided by the GL_ANGLE_framebuffer_blit extension (eg, no scaling or mirroring). cogl/cogl-framebuffer-private.h | 53 +++++++++++++++++++++++++++++++++++++++ cogl/cogl-framebuffer.c | 46 +++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+), 0 deletions(-) commit 392cfb493a2da80aa3185162651a184b5f2936b5 Author: Neil Roberts Date: Sat Feb 5 12:42:39 2011 +0000 cogl-gles: Check for the GL_ANGLE_framebuffer_blit extension This extension is the GLES equivalent of the GL_EXT_framebuffer_blit extension except that it has some extra restrictions. We need to check for some extension that provides glBlitFramebuffer so that we can unconditionally use ctx->drv.pf_glBlitFramebuffer in both GL and GLES code. Even with the restrictions, the extension provides enough features for what Cogl needs. cogl/driver/gles/cogl-feature-functions-gles.h | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) commit 50babfbc7a7793474a68e6f2c49fa8790a821f97 Author: Neil Roberts Date: Fri Jan 21 17:37:10 2011 +0000 cogl-atlas-texture: Make copying a texture out more robust Previously when _cogl_atlas_texture_migrate_out_of_atlas is called it would unreference the atlas texture's sub-texture before calling _cogl_atlas_copy_rectangle. This would leave the atlas texture in an inconsistent state during the copy. This doesn't normally matter but if the copy ends up doing a render then the atlas texture may end up being referenced. In particular it would cause problems if the texture is left in a texture unit because then Cogl may try to call get_gl_texture even though the texture isn't actually being used for rendering. To fix this the sub texture is now unrefed after the copy call instead. cogl/cogl-atlas-texture.c | 23 +++++++++++++++-------- 1 files changed, 15 insertions(+), 8 deletions(-) commit a067e7a16b52488b0bf66845959d649de4ca0d43 Author: Neil Roberts Date: Wed Feb 2 14:23:53 2011 +0000 cogl-framebuffer: Separate the draw and read buffer The current framebuffer is now internally separated so that there can be a different draw and read buffer. This is required to use the GL_EXT_framebuffer_blit extension. The current draw and read buffers are stored as a pair in a single stack so that pushing the draw and read buffer is done simultaneously with the new _cogl_push_framebuffers internal function. Calling cogl_pop_framebuffer will restore both the draw and read buffer to the previous state. The public cogl_push_framebuffer function is layered on top of the new function so that it just pushes the same buffer for both drawing and reading. When flushing the framebuffer state, the cogl_framebuffer_flush_state function now tackes a pointer to both the draw and the read buffer. Anywhere that was just flushing the state for the current framebuffer with _cogl_get_framebuffer now needs to call both _cogl_get_draw_buffer and _cogl_get_read_buffer. cogl/cogl-attribute.c | 8 +- cogl/cogl-clip-stack.c | 10 +- cogl/cogl-clip-state.c | 14 +- cogl/cogl-framebuffer-private.h | 23 ++++- cogl/cogl-framebuffer.c | 235 +++++++++++++++++++++++++++++---------- cogl/cogl-journal.c | 11 +- cogl/cogl-matrix-stack.c | 2 +- cogl/cogl-primitives.c | 4 +- cogl/cogl-texture.c | 2 +- cogl/cogl.c | 50 +++++---- cogl/cogl2-path.c | 8 +- 11 files changed, 255 insertions(+), 112 deletions(-) commit 4d6754ed0fc9202602241aa0c656befce651033e Merge: 7eb6dba aa4f633 Author: Emmanuele Bassi Date: Fri Feb 11 16:45:45 2011 +0000 Merge remote-tracking branch 'nobled/wayland-fixes2' * nobled/wayland-fixes2: wayland: fix shm buffers wayland: set renderable type on dummy surface wayland: check for egl extensions explicitly wayland: fall back to shm buffers if drm fails wayland: add shm buffer code wayland: make buffer handling generic wayland: really fix buffer format selection wayland: fix pixel format wayland: clean up buffer creation code wayland: don't require the surfaceless extensions wayland: check for API-specific surfaceless extension wayland: fix GLES context creation wayland: use EGL_NO_SURFACE wayland: update to new api wayland: fix connecting to default socket fix ClutterContainer docs commit 7eb6dba7c29aaae2102e5b7e5a04f46abe5300b5 Merge: ef1b400 94bcb44 Author: Emmanuele Bassi Date: Fri Feb 11 15:03:22 2011 +0000 Merge remote-tracking branch 'elliot/cookbook-animations-path' * elliot/cookbook-animations-path: docs: Add recipe for animating an actor on a curved path commit ef1b4000424698faebc59172d3fd181584d2a366 Author: Neil Roberts Date: Wed Feb 2 15:17:50 2011 +0000 cogl-framebuffer: Fix flushing the framebuffer on push When pushing a framebuffer it would previously push COGL_INVALID_HANDLE to the top of the framebuffer stack so that when it later calls cogl_set_framebuffer it will recognise that the framebuffer is different and replace the top with the new pointer. This isn't ideal because it breaks the code to flush the journal because _cogl_framebuffer_flush_journal is called with the value of the old pointer which is NULL. That function was checking for a NULL pointer so it wouldn't actually flush. It also would mean that if you pushed the same framebuffer twice we would end up dirtying state unnecessarily. To fix this cogl_push_framebuffer now pushes a reference to the current framebuffer instead. cogl/cogl-framebuffer.c | 15 ++++++++++----- 1 files changed, 10 insertions(+), 5 deletions(-) commit 4d2878d4b259ccbe3b5472d0bdbd8685ae7ec57d Author: Neil Roberts Date: Wed Feb 9 19:31:42 2011 +0000 cogl-framebuffer: Remove all dependencies after a flush After a dependent framebuffer is added to a framebuffer it was never getting removed. Once the journal for a framebuffer is flushed we no longer depend on any framebuffers so the list should be cleared. This was causing leaks of offscreens and textures. cogl/cogl-framebuffer.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit df07edf83e0072c05a50cc93ae99432163355cec Author: Robert Bragg Date: Tue Feb 1 13:24:13 2011 +0000 docs: clarify cogl_vertex_buffer_adds docs This adds a clarification that cogl_vertex_buffer_add can also be used to replace a previously added attribute with the same name. cogl/cogl-vertex-buffer.h | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit b351aa4af4fabea79518fdc28b7a38637126a8c2 Author: Robert Bragg Date: Tue Feb 1 13:19:49 2011 +0000 matrix: note that _matrix_multiply can multiply in-place This adds a note to clarify that cogl_matrix_multiply allows you to multiply the @a matrix in-place, so @a can equal @result but @b can't equal @result. cogl/cogl-matrix.h | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) commit b3a0bdf7f676a776faa04715ecb92d96aa947f84 Author: Neil Roberts Date: Wed Feb 9 15:24:43 2011 +0000 cogl: Set the layer matrix on the right layer instead of a random one When uploading the layer matrix to GL it wasn't first calling glActiveTextureMatrix to set the right texture unit for the layer. This would end up setting the texture matrix on whatever layer happened to be previously active. This happened to work for test-cogl-multitexture presumably because it was coincidentally setting the layer matrix on the last used layer. cogl/cogl-pipeline-vertend-fixed.c | 2 ++ cogl/cogl-pipeline-vertend-glsl.c | 2 ++ 2 files changed, 4 insertions(+), 0 deletions(-) commit 94bcb4429b645f18586fd86aeb80688385a24aef Author: Neil Roberts Date: Tue Feb 1 18:43:27 2011 +0000 cogl-vertex-buffer: Use a ref count on the pipeline private data The pipeline private data is accessed both from the private data set on a CoglPipeline and the destroy notify function of a weak material that the vertex buffer creates when it needs to override the wrap mode. However when a CoglPipeline is destroyed, the CoglObject code first removes all of the private data set on the object and then the CoglPipeline code gets invoked to destroy all of the weak children. At this point the vertex buffer's weak override destroy notify function will get invoked and try to use the private data which has already been freed causing a crash. This patch instead adds a reference count to the pipeline private data stuct so that we can avoid freeing it until both the private data on the pipeline has been destroyed and all of the weak materials are destroyed. http://bugzilla.clutter-project.org/show_bug.cgi?id=2544 cogl/cogl-vertex-buffer.c | 33 +++++++++++++++++++++++++++------ 1 files changed, 27 insertions(+), 6 deletions(-) commit a866f2f4f46cdba425fd8ebee646a9fa3e20b15e Author: Neil Roberts Date: Tue Feb 1 17:38:58 2011 +0000 cogl-pipeline: Fix comparing the color in set_layer_combine_constant In cogl_pipeline_set_layer_combine_constant it was comparing whether the new color is the same as the old color using a memcmp on the constant_color parameter. However the combine constant is stored in the layer data as an array of four floats but the passed in color is a CoglColor (which is currently an array of four guint8s). This was causing valgrind errors and presumably also the check for setting the same color twice would always fail. This patch makes it do the conversion to a float array upfront before the comparison. cogl/cogl-pipeline.c | 21 +++++++++++---------- 1 files changed, 11 insertions(+), 10 deletions(-) commit fadd9358913083b290c458e99dcd41045241f394 Author: Neil Roberts Date: Mon Jan 31 18:53:51 2011 +0000 cogl-matrix: Get rid of the *_packed variants cogl_matrix_project_points and cogl_matrix_transform_points had an optimization for the common case where the stride parameters exactly match the size of the corresponding structures. The code for both when generated by gcc with -O2 on x86-64 use two registers to hold the addresses of the input and output arrays. In the strided version these pointers are incremented by adding the value of a register and in the packed version they are incremented by adding an immediate value. I think the difference in cost here would be negligible and it may even be faster to add a register. Also GCC appears to retain the loop counter in a register for the strided version but in the packed version it can optimize it out and directly use the input pointer as the counter. I think it would be possible to reorder the code a bit to explicitly use the input pointer as the counter if this were a problem. Getting rid of the packed versions tidies up the code a bit and it could potentially be faster if the code differences are small and we get to avoid an extra conditional in cogl_matrix_transform_points. cogl/cogl-matrix.c | 246 +++++++++++----------------------------------------- 1 files changed, 50 insertions(+), 196 deletions(-) commit edd7a71ecfe2404da881b4867f1b4c26829292cd Author: Emmanuele Bassi Date: Mon Jan 31 13:58:12 2011 +0000 Merge remote branch 'elliot/cookbook-actors-composite' * elliot/cookbook-actors-composite: docs: Add reference to useful GObject tutorial docs: Explain why destroy() is implemented docs: Implement destroy() rather than dispose() docs: Don't use clutter_stage_get_default() docs: Change text on button docs: Add a note about other state variables docs: Complete composite actor recipe docs: Change order of functions in example to match docs docs: Add more comments on how allocate() works docs: Include code examples in the recipe docs: Explain enums for properties and signals docs: Don't set explicit size on button docs: Add example of preferred_height() and preferred_width() docs: Add recipe for creating a custom ClutterActor with composition docs: Add more comments on code example for composite actor docs: Improve example code formatting docs: Add some gtk-doc annotations to example docs: Add custom ClutterActor example which uses composition commit dc56d908edb89fce99fcb9b911c53c91ee1be8a2 Author: Robert Bragg Date: Mon Jan 24 18:42:28 2011 +0000 pipeline: fix for _init_multi_property_sparse_state When copying COMBINE state in _cogl_pipeline_layer_init_multi_property_sparse_state we would read some state from the destination layer (invalid data potentially), then redundantly set the value back on the destination. This was picked up by valgrind, and the code is now more careful about how it references the src layer vs the destination layer. cogl/cogl-pipeline.c | 27 ++++++++++++++------------- 1 files changed, 14 insertions(+), 13 deletions(-) commit 325c620f81b4d164a066f246af7f2c5af06f4608 Author: Robert Bragg Date: Fri Jan 21 19:05:23 2011 +0000 framebuffer: flush journal when switching framebuffers There is currently a problem with per-framebuffer journals in that it's possible to create a framebuffer from a texture which then gets rendered too but the framebuffer (and corresponding journal) can be freed before the texture gets used to draw with. Conceptually we want to make sure when freeing a framebuffer that - if it is associated with a texture - we flush the journal as the last thing before really freeing the framebuffer's meta data. Technically though this is awkward to implement since the obvious mechanism for us to be notified about the framebuffer's destruction (by setting some user data internally with a callback) notifies when the framebuffer has a ref-count of 0. This means we'd have to be careful what we do with the framebuffer to consider e.g. recursive destruction; anything that would set more user data on the framebuffer while it is being destroyed and ensuring nothing else gets notified of the framebuffer's destruction before the journal has been flushed. For simplicity, for now, this patch provides another solution which is to flush framebuffer journals whenever we switch away from a given framebuffer via cogl_set_framebuffer or cogl_push/pop_framebuffer. The disadvantage of this approach is that we can't batch all the geometry of a scene that involves intermediate renders to offscreen framebufers. Clutter is doing this more and more with applications that use the ClutterEffect APIs so this is a shame. Hopefully this will only be a stop-gap solution while we consider how to reliably support journal logging across framebuffer changes. cogl/cogl-framebuffer.c | 26 ++++++++++++++++++++++---- 1 files changed, 22 insertions(+), 4 deletions(-) commit 2b812d3d049ce450df2f1f335ea6643c49d7ab0d Author: Neil Roberts Date: Mon Jan 24 17:32:06 2011 +0000 cogl-clip-stack: Fix flushing multiple stencil rectangles When flushing a clip stack that contains more than one rectangle which needs to use the stencil buffer the code takes a different path so that it can combine the new rectangle with the existing contents of the stencil buffer. However it was not correctly flushing the modelview and projection matrices so that rectangle would be in the wrong place. cogl/cogl-clip-stack.c | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) commit 2ddab50ae45cba95a0188165166fec4a6057bcfb Author: Neil Roberts Date: Mon Jan 24 16:36:56 2011 +0000 cogl-debug: Add a debug option for tracing clipping This adds a COGL_DEBUG=clipping option that reports how the clip is being flushed. This is needed to determine whether the scissor, stencil clip planes or software clipping is being used. cogl/cogl-clip-stack.c | 12 ++++++++++++ cogl/cogl-debug-options.h | 5 +++++ cogl/cogl-debug.c | 3 ++- cogl/cogl-debug.h | 1 + cogl/cogl-journal.c | 2 ++ 5 files changed, 22 insertions(+), 1 deletions(-) commit c4a94439de2700c550da742143c46ee7e72e7f62 Author: Neil Roberts Date: Mon Jan 24 14:28:00 2011 +0000 cogl-debug: Split the flags to support more than 32 The CoglDebugFlags are now stored in an array of unsigned ints rather than a single variable. The flags are accessed using macros instead of directly peeking at the cogl_debug_flags variable. The index values are stored in the enum rather than the actual mask values so that the enum doesn't need to be more than 32 bits wide. The hope is that the code to determine the index into the array can be optimized out by the compiler so it should have exactly the same performance as the old code. cogl/cogl-atlas-texture.c | 2 +- cogl/cogl-attribute.c | 8 ++-- cogl/cogl-blend-string.c | 14 +++--- cogl/cogl-context.c | 10 ++-- cogl/cogl-debug.c | 85 ++++++++++++++++++++++------- cogl/cogl-debug.h | 105 ++++++++++++++++++++++++------------ cogl/cogl-framebuffer.c | 4 +- cogl/cogl-journal.c | 38 +++++++------- cogl/cogl-matrix-private.h | 2 +- cogl/cogl-pipeline-fragend-arbfp.c | 6 +- cogl/cogl-pipeline-fragend-fixed.c | 6 +- cogl/cogl-pipeline-vertend-fixed.c | 2 +- cogl/cogl-pipeline.c | 2 +- cogl/cogl-profile.c | 10 ++-- cogl/cogl-rectangle-map.c | 4 +- cogl/cogl-shader.c | 4 +- 16 files changed, 191 insertions(+), 111 deletions(-) commit 4bb08ba00b4d572b3201a833377304b88f66e3c3 Author: Neil Roberts Date: Fri Jan 14 11:11:44 2011 +0000 cogl-pipeline: Flush the lighting params in common code not vertend The lighting parameters such as the diffuse and ambient colors were previously only flushed in the fixed vertend. This meant that if a vertex shader was used then they would not be set. The lighting parameters are uniforms which are just as useful in a fragment shader so it doesn't really make sense to set them in the vertend. They are now flushed in the common cogl-pipeline-opengl code but the code is #ifdef'd for GLES2 because they need to be part of the progend in that case. cogl/cogl-pipeline-opengl.c | 25 ++++++++++++++++++++++++- cogl/cogl-pipeline-vertend-fixed.c | 19 ------------------- 2 files changed, 24 insertions(+), 20 deletions(-) commit 242d9a5002be4ffd35873e84c3cd01e82b1fe114 Author: Neil Roberts Date: Thu Jan 13 18:24:22 2011 +0000 cogl-pipeline-progend-glsl: Generalize updating GLES2 uniforms The uniforms for the alpha test reference value and point size on GLES2 are updating using similar code. This generalizes the code so that there is a static array of predefined builtin uniforms which contains the uniform name, a pointer to a function to get the value from the pipeline, a pointer to a function to update the uniform and a flag representing which CoglPipelineState change affects the uniform. The uniforms are then updated in a loop. This should simplify adding more builtin uniforms. cogl/cogl-pipeline-progend-glsl.c | 134 +++++++++++++++++++++---------------- 1 files changed, 77 insertions(+), 57 deletions(-) commit b2285058a4b054e2e49ea1dbb9e7299be94b5792 Author: Neil Roberts Date: Wed Jan 12 13:47:55 2011 +0000 cogl-shader-boilerplate: Move the uniforms to the common code The builtin uniforms are accessible from either the vertex shader or the fragment shader so we should define them in the common section. This doesn't really matter for the current list of uniforms because it's pretty unlikely that you'd want to access the matrices from the fragment shader, but for other builtins such as the lighting material properties it makes sense. cogl/cogl-shader-boilerplate.h | 31 +++++++++++++++++-------------- 1 files changed, 17 insertions(+), 14 deletions(-) commit a9900d22e05eedfcaaa89ab7bb5bbe9a109a6265 Merge: d6a150b 34ce527 Author: Emmanuele Bassi Date: Fri Jan 21 20:22:32 2011 +0000 Merge branch 'xi2' * xi2: (41 commits) test-devices: Actually print the axis data device-manager/xi2: Sync the stage of source devices event: Clean up clutter_event_copy() device: unset the axes array pointer when resetting device-manager/xi2: Fix device hotplugging glx: Clean up GLX implementation device/x11: Store min/max keycode in the XI device class x11: Hide all private symbols docs: More documentation fixes for InputDevice */event: Never manipulate the event queue directly win32: Update DeviceManager device creation device: Allow enabling/disabling non-master devices backend/eglx: Add newly created stages to the translators device: Add more doc annotations device: Use a double for translate_axis() argument test-devices: Clean up and show axes data event: Fix up clutter_event_copy() device/xi2: Translate the axis data after setting devices device: Add more accessors for properties docs: Update API reference ... commit d6a150bb6e608f2198f510d01152a87b62706de4 Author: Robert Bragg Date: Fri Jan 21 18:43:35 2011 +0000 cogl: call _cogl_texture_init for x11 tfp When we added the texture->framebuffers member a _cogl_texture_init funciton was added to initialize the list of framebuffers associated with a texture to NULL. All the backends were updated except the x11 tfp backend. This was causing crashes in test-pixmap. cogl/winsys/cogl-texture-pixmap-x11.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 4758ed2cf25389ca4fca1788eaca8496633470b6 Author: Robert Bragg Date: Fri Jan 21 17:38:14 2011 +0000 journal: start uprof flush timer after flushing fb deps This avoids us recursively starting the _cogl_journal_flush uprof timer by only starting it after flushing the journals of dependency framebuffers. cogl/cogl-journal.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) commit affce86924c843f987f6e0a763d0c7f4f8554360 Author: Robert Bragg Date: Fri Jan 21 17:28:34 2011 +0000 cogl: make sure to init ctx->framebuffers This makes sure to initialize ctx->framebuffers to NULL otherwise we can get apps crashing when they create their first framebuffer. cogl/cogl-context.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 9b0fd925276a245d0ff11001545e2567911ce9fb Author: Robert Bragg Date: Thu Jan 20 19:31:53 2011 +0000 cogl: rename CoglVertexAttribute CoglAttribute This is part of a broader cleanup of some of the experimental Cogl API. One of the reasons for this particular rename is to reduce the verbosity of using the API. Another reason is that CoglVertexArray is going to be renamed CoglAttributeBuffer and we want to help emphasize the relationship between CoglAttributes and CoglAttributeBuffers. cogl/Makefile.am | 6 +- cogl/cogl-attribute-private.h | 103 +++ cogl/cogl-attribute.c | 1272 +++++++++++++++++++++++++++++ cogl/cogl-attribute.h | 182 ++++ cogl/cogl-context.c | 2 +- cogl/cogl-index-array.c | 4 +- cogl/cogl-journal.c | 117 ++-- cogl/cogl-path-private.h | 4 +- cogl/cogl-pipeline-progend-glsl-private.h | 2 +- cogl/cogl-primitive.c | 309 ++++---- cogl/cogl-primitive.h | 26 +- cogl/cogl-primitives.c | 84 +- cogl/cogl-types.h | 22 + cogl/cogl-vertex-attribute-private.h | 103 --- cogl/cogl-vertex-attribute.c | 1272 ----------------------------- cogl/cogl-vertex-attribute.h | 205 ----- cogl/cogl-vertex-buffer-private.h | 4 +- cogl/cogl-vertex-buffer.c | 18 +- cogl/cogl-vertex-buffer.h | 22 - cogl/cogl.c | 4 +- cogl/cogl.h | 2 +- cogl/cogl2-path.c | 28 +- 22 files changed, 1872 insertions(+), 1919 deletions(-) commit 8fa3a5e1c199ca10828d212fd1818b763e0ad1a4 Author: Robert Bragg Date: Thu Jan 20 18:51:24 2011 +0000 docs: Adds bitmap section to cogl reference manual This adds an include for the cogl-bitmap section to cogl-docs.xml.in doc/reference/cogl/cogl-docs.xml.in | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 87c990a29ca7bc92cc1a163756939535dd11db13 Author: Robert Bragg Date: Thu Jan 20 12:29:49 2011 +0000 cogl: s/Cogl*Vertex/CoglVertex*/ We have a bunch of experimental convenience functions like cogl_primitive_p2/p2t2 that have corresponding vertex structures but it seemed a bit odd to have the vertex annotation e.g. "P2T2" be an infix of the type like CoglP2T2Vertex instead of be a postfix like CoglVertexP2T2. This switches them all to follow the postfix naming style. cogl/cogl-primitive.c | 96 +++++++++++++++++++++--------------------- cogl/cogl-primitive.h | 80 +++++++++++++++++----------------- cogl/cogl-vertex-attribute.c | 20 ++++---- 3 files changed, 98 insertions(+), 98 deletions(-) commit 5f6cb16e2b4d32a7d4bd2ee3381157b0bebba8d2 Author: Robert Bragg Date: Thu Jan 20 14:41:51 2011 +0000 debug: Adds a COGL_DEBUG=disable-fast-read-pixel option COGL_DEBUG=disable-fast-read-pixel can be used to disable the optimization for reading a single pixel colour back by looking at the geometry in the journal and not involving the GPU. With this disabled we will always flush the journal, rendering to the framebuffer and then use glReadPixels to get the result. cogl/cogl-debug-options.h | 7 ++++- cogl/cogl-debug.c | 3 +- cogl/cogl-debug.h | 61 +++++++++++++++++++++++---------------------- cogl/cogl-framebuffer.c | 3 ++ cogl/cogl-journal.c | 3 ++ 5 files changed, 45 insertions(+), 32 deletions(-) commit a8d6c3f686d5d59417bc5afe52ad2555331333e1 Author: Robert Bragg Date: Wed Jan 12 22:12:41 2011 +0000 cogl: Implements a software only read-pixel fast-path This adds a transparent optimization to cogl_read_pixels for when a single pixel is being read back and it happens that all the geometry of the current frame is still available in the framebuffer's associated journal. The intention is to indirectly optimize Clutter's render based picking mechanism in such a way that the 99% of cases where scenes are comprised of trivial quad primitives that can easily be intersected we can avoid the latency of kicking a GPU render and blocking for the result when we know we can calculate the result manually on the CPU probably faster than we could even kick a render. A nice property of this solution is that it maintains all the flexibility of the render based picking provided by Clutter and it can gracefully fall back to GPU rendering if actors are drawn using anything more complex than a quad for their geometry. It seems worth noting that there is a limitation to the extensibility of this approach in that it can only optimize picking a against geometry that passes through Cogl's journal which isn't something Clutter directly controls. For now though this really doesn't matter since basically all apps should end up hitting this fast-path. The current idea to address this longer term would be a pick2 vfunc for ClutterActor that can support geometry and render based input regions of actors and move this optimization up into Clutter instead. Note: currently we don't have a primitive count threshold to consider that there could be scenes with enough geometry for us to compensate for the cost of kicking a render and determine a result more efficiently by utilizing the GPU. We don't currently expect this to be common though. Note: in the future it could still be interesting to revive something like the wip/async-pbo-picking branch to provide an asynchronous read-pixels based optimization for Clutter picking in cases where more complex input regions that necessitate rendering are in use or if we do add a threshold for rendering as mentioned above. cogl/cogl-framebuffer-private.h | 27 ++ cogl/cogl-framebuffer.c | 196 +++++++++++- cogl/cogl-journal-private.h | 20 ++ cogl/cogl-journal.c | 710 +++++++++++++++++++++++++++++---------- cogl/cogl-vertex-attribute.c | 7 + cogl/cogl.c | 20 +- 6 files changed, 800 insertions(+), 180 deletions(-) commit 3e42af2a006cefbcf7ce6d9e7315e8c204a2f896 Author: Robert Bragg Date: Tue Jan 18 16:37:01 2011 +0000 matrix: fix transform/project_points() APIs Both cogl_matrix_transform_points and _project_points take points_in and points_out arguments and explicitly allow pointing to the same array (i.e. to transform in-place) The implementation of the various internal transform functions though were not handling this possability and so it was possible the reference partially transformed vertex values as if they were original input values leading to incorrect results. This patch ensures we take a temporary copy of the current input point when transforming. cogl/cogl-matrix.c | 136 ++++++++++++++++++++++++++-------------------------- 1 files changed, 68 insertions(+), 68 deletions(-) commit 1f0826543e6e04ccdaedd19e8bcf602f6bfe6931 Author: Robert Bragg Date: Thu Jan 13 14:29:46 2011 +0000 cogl: Adds _cogl_util_point_in_polygon API This adds a utility function that can determine if a given point intersects an arbitrary polygon, by counting how many edges a "semi-infinite" horizontal ray crosses from that point. The plan is to use this for a software based read-pixel fast path that avoids using the GPU to rasterize journaled primitives and can instead intersect a point being read with quads in the journal to determine the correct color. cogl/Makefile.am | 2 + cogl/cogl-point-in-poly-private.h | 40 +++++++++++++++++++++ cogl/cogl-point-in-poly.c | 69 +++++++++++++++++++++++++++++++++++++ 3 files changed, 111 insertions(+), 0 deletions(-) commit 60fd6ab708927f37d29ed58262ed812288c9e72a Author: Robert Bragg Date: Wed Jan 12 22:06:58 2011 +0000 cogl: Adds _cogl_swap_buffers_notify for clutter backends This adds a stop-gap mechanism for Cogl to know when the window system is requested to present the current backbuffer to the frontbuffer by adding a _cogl_swap_buffers_notify function that backends are now expected to call right after issuing the equivalent request to OpenGL vie the platforms OpenGL binding layer. This (blindly) updates all the backends to call this new function. For now Cogl doesn't do anything with the notification but the intention is to use it as part of a planned read-pixel optimization which will need to reset some state at the start of each new frame. cogl/cogl-framebuffer-private.h | 3 +++ cogl/cogl-framebuffer.c | 5 +++++ cogl/cogl.c | 10 ++++++++++ cogl/cogl.h | 3 +++ 4 files changed, 21 insertions(+), 0 deletions(-) commit e1563436b1609f3e87ef83a7e9d3fbb7e624780d Author: Robert Bragg Date: Wed Jan 12 19:30:30 2011 +0000 clip: rename get_clip_stack + add framebuffer_get_stack Instead of having _cogl_get/set_clip stack which reference the global CoglContext this instead makes those into CoglClipState method functions named _cogl_clip_state_get/set_stack that take an explicit pointer to a CoglClipState. This also adds _cogl_framebuffer_get/set_clip_stack convenience functions that avoid having to first get the ClipState from a framebuffer then the stack from that - so we can maintain the convenience of _cogl_get_clip_stack. cogl/cogl-clip-state.c | 21 +++------------------ cogl/cogl-clip-state.h | 21 +++------------------ cogl/cogl-framebuffer-private.h | 26 ++++++++++++++++++++++++++ cogl/cogl-framebuffer.c | 17 +++++++++++++++++ cogl/cogl-journal.c | 5 ++++- 5 files changed, 53 insertions(+), 37 deletions(-) commit cf92670fbbff1fdb70231cb23e4cc891035597b9 Author: Robert Bragg Date: Wed Jan 12 19:13:45 2011 +0000 clip-stack: Adds _cogl_clip_stack_get_bounds API This adds an internal function to be able to query the screen space bounding box of the current clip entries contained in a given CoglClipStack. This bounding box which is cheap to determine can be useful to know the largest extents that might be updated while drawing with this clip stack. For example the plan is to use this as part of an optimized read-pixel path handled on the CPU which will need to track the currently valid extents of the last call to cogl_clear() cogl/cogl-clip-stack.c | 45 ++++++++++++++++++++++++++++++++------------- cogl/cogl-clip-stack.h | 7 +++++++ 2 files changed, 39 insertions(+), 13 deletions(-) commit 1a5a4df3261e1674efb2b53aa738d33fdb53af6c Author: Robert Bragg Date: Thu Jan 6 13:25:45 2011 +0000 journal: Support per-framebuffer journals Instead of having a single journal per context, we now have a CoglJournal object for each CoglFramebuffer. This means we now don't have to flush the journal when switching/pushing/popping between different framebuffers so for example a Clutter scene that involves some ClutterEffect actors that transiently redirect to an FBO can still be batched. This also allows us to track state in the journal that relates to the current frame of its associated framebuffer which we'll need for our optimization for using the CPU to handle reading a single pixel back from a framebuffer when we know the whole scene is currently comprised of simple rectangles in a journal. cogl/cogl-atlas-texture.c | 22 ++++--- cogl/cogl-clip-state.c | 5 +- cogl/cogl-context.c | 6 -- cogl/cogl-context.h | 12 ++-- cogl/cogl-framebuffer-private.h | 23 +++++++ cogl/cogl-framebuffer.c | 111 +++++++++++++++++++++++++++---- cogl/cogl-journal-private.h | 19 +++++- cogl/cogl-journal.c | 140 ++++++++++++++++++++++++++------------- cogl/cogl-pipeline-private.h | 3 + cogl/cogl-pipeline.c | 7 ++- cogl/cogl-primitives.c | 9 ++- cogl/cogl-sub-texture.c | 3 +- cogl/cogl-texture-2d-sliced.c | 2 +- cogl/cogl-texture-2d.c | 2 +- cogl/cogl-texture-3d.c | 2 +- cogl/cogl-texture-private.h | 15 ++++ cogl/cogl-texture-rectangle.c | 2 +- cogl/cogl-texture.c | 58 ++++++++++++++++ cogl/cogl-vertex-attribute.c | 7 ++- cogl/cogl.c | 20 +++++- cogl/cogl2-path.c | 8 ++- 21 files changed, 375 insertions(+), 101 deletions(-) commit 5f35bd7b67d0ff6c942405621891d3f40191bacb Author: Robert Bragg Date: Wed Jan 12 20:37:53 2011 +0000 cogl-object: Adds an internal _cogl_object_set_user_data This adds an internal alternative to cogl_object_set_user_data that also passes an instance pointer to destroy notify callbacks. When setting private data on a CoglObject it's often desirable to know the instance being destroyed when we are being notified to free the private data due to the object being freed. The typical solution to this is to track a pointer to the instance in the private data itself so it can be identified but that usually requires an extra micro allocation for the private data that could have been avoided if only the callback were given an instance pointer. The new internal _cogl_object_set_user_data passes the instance pointer as a second argument which means it is ABI compatible for us to layer the public version on top of this internal function. cogl/cogl-object-private.h | 21 ++++++++++++++++++++- cogl/cogl-object.c | 24 +++++++++++++++++------- 2 files changed, 37 insertions(+), 8 deletions(-) commit a4e50b5ea58e9316e7cac1eff9db24ce94b3d4da Author: Robert Bragg Date: Wed Jan 5 15:30:04 2011 +0000 framebuffer: Move clear code to cogl-framebuffer.c This moves the implementation of cogl_clear into cogl-framebuffer.c as two new internal functions _cogl_framebuffer_clear and _cogl_framebuffer_clear4f. It's not clear if this is what the API will look like as we make more of the CoglFramebuffer API public due to the limitations of using flags to identify buffers when framebuffers may contain any number of ancillary buffers but conceptually it makes some sense to tie the operation of clearing a color buffer to a framebuffer. The short term intention is to enable tracking the current clear color as a property of the framebuffer as part of an optimization for reading back single pixels when the geometry is simple enough that we can compute the result quickly on the CPU. (If the point doesn't intersect any geometry we'll need to return the last clear color.) cogl/cogl-framebuffer-private.h | 20 ++++++++ cogl/cogl-framebuffer.c | 103 +++++++++++++++++++++++++++++++++++++++ cogl/cogl.c | 66 ++----------------------- cogl/cogl2-path.c | 4 +- 4 files changed, 129 insertions(+), 64 deletions(-) commit 34ce527dca3bb552a547c2c1949e40402f8bd634 Author: Neil Roberts Date: Mon Jan 17 12:21:33 2011 +0000 cogl-program: Don't use separate definitions on GLES 1.1 Previously most of the code for cogl-program and cogl-shader was ifdef'd out for GLES 1.1 and alternate stub definitions were defined. This patch removes those and instead puts #ifdef's directly in the functions that need it. This should make it a little bit easier to maintain. http://bugzilla.clutter-project.org/show_bug.cgi?id=2516 cogl/cogl-program.c | 105 ++++++-------------------------------------------- cogl/cogl-shader.c | 91 +++++++++++++++----------------------------- 2 files changed, 44 insertions(+), 152 deletions(-) commit ed29d405b2a1272ed35de934cda69896cf191b3f Author: Neil Roberts Date: Mon Jan 17 12:20:06 2011 +0000 cogl-pipeline-opengl: #ifdef out set_glsl_program for GLES 1.1 glUseProgram is not available under GLES 1.1 so it was breaking the build. http://bugzilla.clutter-project.org/show_bug.cgi?id=2516 cogl/cogl-pipeline-opengl.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) commit d33f66303f0e4bb1f44a34f3aa7b5b8887b05665 Author: Neil Roberts Date: Mon Jan 17 12:06:13 2011 +0000 cogl-pipeline: Fix the enum names for the constant combine source When determining whether to hash the combine constant Cogl checks the arguments to the combine funcs to determine whether the combine constant is used. However is was using the GLenums GL_CONSTANT_COLOR and GL_CONSTANT_ALPHA but these are not valid values for the CoglPipelineCombineSource enum so presumably the constant would never get hashed. This patch makes it use Cogl's enum of COGL_PIPELINE_COMBINE_SOURCE_CONSTANT instead. http://bugzilla.clutter-project.org/show_bug.cgi?id=2516 cogl/cogl-pipeline.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) commit 4f08e3cf6e719c05e8e93016ae8e25568457ceb4 Author: Neil Roberts Date: Thu Jan 13 15:54:50 2011 +0000 cogl-buffer: Support mapping buffers for write on GLES GLES has an extension called GL_OES_mapbuffer to support mapping buffer objects but only for writing. Cogl now has two new feature flags to advertise whether mapping for reading and writing is supported. Under OpenGL, these features are always set if the VBO extension is advertised and under GLES only the write flag is set if the GL_OES_mapbuffer extension is advertised. cogl/cogl-buffer.c | 44 +++++++++++------------- cogl/cogl-types.h | 8 ++++- cogl/driver/gl/cogl-feature-functions-gl.h | 4 ++- cogl/driver/gles/cogl-feature-functions-gles.h | 12 ++++++ 4 files changed, 42 insertions(+), 26 deletions(-) commit 36b996672c58227750014504eca8826407a0b019 Author: Neil Roberts Date: Thu Jan 13 15:36:08 2011 +0000 cogl: Enable the VBOs feature for GLES2 The GLES2 wrapper code has been removed so there are no longer any problems with enabling VBOs. cogl/driver/gles/cogl-gles.c | 5 ----- 1 files changed, 0 insertions(+), 5 deletions(-) commit a8216aff2f3daa56225aec56ff27317af6d0eba8 Author: Neil Roberts Date: Thu Jan 13 15:35:30 2011 +0000 cogl: Fallback to set_data when mapping a buffer to fill it In the journal code and when generating the stroke path the vertices are generated on the fly and stored in a CoglBuffer using cogl_buffer_map. However cogl_buffer_map is allowed to fail but it wasn't checking for a NULL return value. In particular on GLES it will always fail because glMapBuffer is only provided by an extension. This adds a new pair of internal functions called _cogl_buffer_{un,}map_for_fill_or_fallback which wrap cogl_buffer_map. If the map fails then it will instead return a pointer into a GByteArray attached to the context. When the buffer is unmapped the array is copied into the buffer using cogl_buffer_set_data. cogl/cogl-buffer-private.h | 19 +++++++++++++-- cogl/cogl-buffer.c | 51 ++++++++++++++++++++++++++++++++++++++++++++ cogl/cogl-context.c | 5 ++++ cogl/cogl-context.h | 6 +++++ cogl/cogl-journal.c | 5 +-- cogl/cogl2-path.c | 7 ++--- 6 files changed, 83 insertions(+), 10 deletions(-) commit ac81f3b936b7efb287d4c81973f5fd84166f52d5 Author: Neil Roberts Date: Thu Jan 13 14:12:10 2011 +0000 cogl-context: Don't enable point sprites on GLES2 On GLES2 there's no builtin mechanism to replace texture coordinates with point sprite coordinates so calling glEnable(GL_POINT_SPRITE) isn't valid. Instead the point sprite coords are implemented by using a special builtin varying variable in GLSL. cogl/cogl-context.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) commit 03dbf67ca4eb35fdc78d2a2d100c415c3e489fb8 Author: Robert Bragg Date: Tue Jan 11 16:02:06 2011 +0000 pipeline: differentiate texture target and data state There are several places where we need to compare the texture state of a pipeline and sometimes we need to take into consideration if the underlying texture has changed but other times we may only care to know if the texture target has changed. For example the fragends typically generate programs that they want to share with all pipelines with equivalent fragment processing state, and in this case when comparing pipelines we only care about the texture targets since changes to the underlying texture won't affect the programs generated. Prior to this we had tried to handle this by passing around some special flags to various functions that evaluate pipeline state to say when we do/don't care about the texture data, but this wasn't working in all cases and was more awkward to manage than the new approach. Now we simply have two state bits: COGL_PIPELINE_LAYER_STATE_TEXTURE_TARGET and COGL_PIPELINE_LAYER_STATE_TEXTURE_DATA and CoglPipelineLayer has an additional target member. Since all the appropriate code takes masks of these state bits to determine what to evaluate we don't need any extra magic flags. cogl/cogl-pipeline-fragend-arbfp.c | 9 +- cogl/cogl-pipeline-fragend-fixed.c | 25 ++-- cogl/cogl-pipeline-fragend-glsl.c | 3 +- cogl/cogl-pipeline-opengl.c | 9 +- cogl/cogl-pipeline-private.h | 28 ++--- cogl/cogl-pipeline-progend-glsl.c | 3 +- cogl/cogl-pipeline-vertend-glsl.c | 3 +- cogl/cogl-pipeline.c | 273 +++++++++++++++++++++++++----------- 8 files changed, 223 insertions(+), 130 deletions(-) commit a6628ca1130929feca77be9bf9774072af5b0b6b Author: Robert Bragg Date: Wed Jan 12 17:11:48 2011 +0000 pipeline: optimize state init if changing property When notifying that a pipeline property is going to change, then at times a pipeline will take over being the authority of the corresponding state group. Some state groups can contain multiple properties and so to maintain the integrity of all of the properties we have to initialize all the property values in the new authority. For state groups with only one property we don't have to initialize anything during the pre_change_notify() because we can assume the value will be initialized as part of the change being notified. This patch optimizes how we handle this initialization of state groups in a couple of ways; firstly we no longer do anything to initialize state-groups with only one property, secondly we no longer use _cogl_pipeline_copy_differences - (we have a new _cogl_pipeline_init_multi_property_sparse_state() func) so we can avoid lots calls to handle_automatic_blend_enable() which is sometimes seen high in sysprof profiles. cogl/cogl-pipeline-private.h | 161 +++++++++++++++++---------- cogl/cogl-pipeline.c | 255 +++++++++++++++++++++++++++--------------- 2 files changed, 266 insertions(+), 150 deletions(-) commit 6e14b72284e10ca14bc61c577a3fa57bb63d1a4f Author: Neil Roberts Date: Wed Jan 12 16:56:52 2011 +0000 cogl-atlas-texture: Don't disable atlas if can't read texture data Previously atlasing would be disabled if the GL driver does not support reading back texture data. This meant that atlasing would not happen on GLES. However we also require that the driver support FBOs and the texture data is only read back as a fallback if the FBO fails. Therefore the atlas should be ok on GLES 2 which has FBO support in core. cogl/cogl-atlas-texture.c | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-) commit a74050554a485c5d3513ed8e639ee3c4c3be2438 Author: Robert Bragg Date: Tue Jan 11 14:10:11 2011 +0000 pipeline: don't skip flush if skip_gl_color flag differs We try and bail out of flushing pipeline state asap if we can see the pipeline has already been flushed and hasn't changed but we weren't checking to see if the skip_gl_color flag is the same as when it was last flush too and so we'd sometimes bail out without updating the glColor correctly. cogl/cogl-pipeline-opengl.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 3b3cfe182468fe3fcee92d8f6ba1821199fd673a Author: Neil Roberts Date: Mon Jan 10 20:13:41 2011 +0000 cogl-vertex-attribute: Optionally avoid applying the legacy state When an item is added to the journal the current pipeline immediately gets the legacy state applied to it and the modified pipeline is logged instead of the original. However the actual drawing from the journal is done using the vertex attribute API which was also applying the legacy state. This meant that the legacy state used would be a combination of the state set when the journal entry was added as well as the state set when the journal is flushed. To fix this there is now an extra CoglDrawFlag to avoid applying the legacy state when setting up the GL state for the vertex attributes. The journal uses this flag when flushing. cogl/cogl-journal.c | 3 ++- cogl/cogl-vertex-attribute-private.h | 6 +++++- cogl/cogl-vertex-attribute.c | 6 ++++-- 3 files changed, 11 insertions(+), 4 deletions(-) commit bbce77fceaf2db65809035545418b5394491cf9c Author: Neil Roberts Date: Tue Dec 14 14:44:45 2010 +0000 cogl-journal: Avoid enabling blending if possible The vertex attribute API assumes that if there is a color array enabled then we can't determine if the colors are opaque so we have to enable blending. The journal always uses a color array to avoid switching color state between rectangles. Since the journal switched to using vertex attributes this means we effectively always enable blending from the journal. To fix this there is now a new flag for _cogl_draw_vertex_attributes to specify that the color array is known to only contain opaque colors which causes the draw function not to copy the pipeline. If the pipeline has blending disabled then the journal passes this flag. http://bugzilla.clutter-project.org/show_bug.cgi?id=2481 cogl/cogl-journal.c | 9 ++++++--- cogl/cogl-vertex-attribute-private.h | 9 ++++++++- cogl/cogl-vertex-attribute.c | 10 ++++++---- 3 files changed, 20 insertions(+), 8 deletions(-) commit a847289850fc5378343775d731d3ac992ddf4437 Author: Neil Roberts Date: Tue Dec 14 14:24:17 2010 +0000 cogl-vertex-attribute: Add flags to _cogl_draw_vertex_attributes_array There is an internal version of cogl_draw_vertex_attributes_array which previously just bypassed the framebuffer flushing, journal flushing and pipeline validation so that it could be used to draw the journal. This patch generalises the function so that it takes a set of flags to specify which parts to flush. The public version of the function now just calls the internal version with the flags set to 0. The '_real' version of the function has now been merged into the internal version of the function because it was only called in one place. This simplifies the code somewhat. The common code which flushed the various state has been moved to a separate function. The indexed versions of the functions have had a similar treatment. http://bugzilla.clutter-project.org/show_bug.cgi?id=2481 cogl/cogl-journal.c | 17 +++- cogl/cogl-primitives.c | 6 +- cogl/cogl-vertex-attribute-private.h | 13 ++- cogl/cogl-vertex-attribute.c | 167 +++++++++++++--------------------- cogl/cogl2-path.c | 14 ++- 5 files changed, 100 insertions(+), 117 deletions(-) commit 4a7dbc0e4ed39d056c6137f711a5cc6d4ba738fb Author: Neil Roberts Date: Fri Dec 17 16:30:23 2010 +0000 cogl: Don't assume that CoglBitmaps are allocated to height*rowstride Cogl no longer has any code that assumes the buffer in a CoglBitmap is allocated to the full size of height*rowstride. We should comment that this is the case so that we remember to keep it that way. This is important for cogl_texture_new_from_data because the application may have created the data from a sub-region of a larger image and in that case it's not safe to read the full rowstride of the last row when the sub region contains the last row of the larger image. http://bugzilla.clutter-project.org/show_bug.cgi?id=2491 cogl/cogl-bitmap-pixbuf.c | 60 ++++++------------------------------------- cogl/cogl-bitmap-private.h | 8 ++++++ 2 files changed, 17 insertions(+), 51 deletions(-) commit 0f43e01cbcac72d3e8de07b2c2472ad2410f13a9 Author: Neil Roberts Date: Fri Dec 17 16:09:26 2010 +0000 cogl-texture-driver-gles: Don't copy the bitmap if alignment matches When uploading data for GLES we need to deal with cases where the rowstride is too large to be described only by GL_UNPACK_ALIGNMENT because there is no GL_UNPACK_ROW_LENGTH. Previously for the sub-region uploading code it would always copy the bitmap and for the code to upload the whole image it would copy the bitmap unless the rowstride == bpp*width. Neither paths took into account that we don't need to copy if the rowstride is just an alignment of bpp*width. This moves the bitmap copying code to a separate function that is used by both upload methods. It only copies the bitmap if the rowstride is not just an alignment of bpp*width. http://bugzilla.clutter-project.org/show_bug.cgi?id=2491 cogl/driver/gles/cogl-texture-driver-gles.c | 103 ++++++++++++++------------ 1 files changed, 55 insertions(+), 48 deletions(-) commit 14e94647bf09d9841cfa0ac650aa37ffc1e3862c Author: Neil Roberts Date: Fri Dec 17 16:06:10 2010 +0000 cogl-util: Add an internal wrapper for the ffs function The ffs function is defined in C99 so if we want to use it in Cogl we need to provide a fallback for MSVC. This adds a configure check for the function and then a fallback using a while loop if it is not available. http://bugzilla.clutter-project.org/show_bug.cgi?id=2491 cogl/cogl-util.c | 21 +++++++++++++++++++++ cogl/cogl-util.h | 8 ++++++++ 2 files changed, 29 insertions(+), 0 deletions(-) commit 0b2dc74dbce582c5ac7d8cababfbadbbf4234dbe Author: Neil Roberts Date: Fri Dec 17 14:52:25 2010 +0000 cogl-texture: Don't use the source rowstride if we have to copy bitmap If we have to copy the bitmap to do the premultiplication then we were previously using the rowstride of the source image as the rowstride for the new image. This is wasteful if the source image is a subregion of a larger image which would make it use a large rowstride. If we have to copy the data anyway we might as well compact it to the smallest rowstride. This also prevents the copy from reading past the end of the last row of pixels. An internal function called _cogl_bitmap_copy has been added to do the copy. It creates a new bitmap with the smallest possible rowstride rounded up the nearest multiple of 4 bytes. There may be other places in Cogl that are currently assuming we can read height*rowstride of the source buffer so they may want to take advantage of this function too. http://bugzilla.clutter-project.org/show_bug.cgi?id=2491 cogl/cogl-bitmap-private.h | 4 ++++ cogl/cogl-bitmap.c | 29 +++++++++++++++++++++++++++++ cogl/cogl-texture.c | 22 +--------------------- 3 files changed, 34 insertions(+), 21 deletions(-) commit 7ae61c3763ab0c26e9c191f447a37d800207dafd Author: Neil Roberts Date: Wed Dec 22 01:45:09 2010 +0000 cogl-vertex-attribute: Fix the name of the cogl_normal_in attribute The builtin vertex attribute for the normals was incorrectly checked for as 'cogl_normal' however it is defined as cogl_normal_in in the shader boilerplate and for the name generated by CoglVertexBuffer. http://bugzilla.clutter-project.org/show_bug.cgi?id=2499 cogl/cogl-vertex-attribute.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit aa4f63338c3fe5dab521d32671cde1bbd11188c5 Author: Emmanuele Bassi Date: Wed Dec 22 09:42:41 2010 +0000 docs: Fixes for the Cogl API reference cogl/cogl-bitmap.h | 4 +- cogl/cogl-buffer.h | 8 +++--- cogl/cogl-index-array.h | 2 +- cogl/cogl-material-compat.h | 11 +++++---- cogl/cogl-object.h | 19 ++++++++------- cogl/cogl-path.h | 8 +++--- cogl/cogl-pipeline.h | 2 +- cogl/cogl-types.h | 4 +- cogl/cogl-vertex-array.h | 2 +- cogl/cogl-vertex-buffer.h | 2 +- doc/reference/cogl/cogl-sections.txt | 39 ++++++++++++++++++++++++++++++--- 11 files changed, 67 insertions(+), 34 deletions(-) commit ba4e3905d32c7bdeca889d87036ed64ce4f7f4eb Author: Emmanuele Bassi Date: Tue Dec 21 12:03:38 2010 +0000 build: Ignore private headers when building the Cogl reference Otherwise gtk-doc will try to look up private symbols. doc/reference/cogl/Makefile.am | 22 +++++++++++++++++----- 1 files changed, 17 insertions(+), 5 deletions(-) commit 885942aec08a85a19ed3bb372d44e8d77c407b33 Author: Neil Roberts Date: Tue Dec 14 13:02:47 2010 +0000 cogl-pipeline-fragend-arbfp: Generate ARBfp if user vertex shader The ARBfp fragend was bypassing generating a shader if the pipeline contains a user program. However it shouldn't do this if the pipeline only contains a vertex shader. This was breaking test-cogl-just-vertex-shader. cogl/cogl-pipeline-fragend-arbfp.c | 17 +++++++++++++---- 1 files changed, 13 insertions(+), 4 deletions(-) commit 9aea72fab5a0b030c320dbc2efd905764b9af3ce Author: Neil Roberts Date: Sat Nov 27 13:15:02 2010 +0000 Allow multiple CoglAtlases for textures Previously Cogl would only ever use one atlas for textures and if it reached the maximum texture size then all other new textures would get their own GL texture. This patch makes it so that we create as many atlases as needed. This should avoid breaking up some batches and it will be particularly good if we switch to always using multi-texturing with a default shader that selects between multiple atlases using a vertex attribute. Whenever a new atlas is created it is stored in a GSList on the context. A weak weference is taken on the atlas using cogl_object_set_user_data so that it can be removed from the list when the atlas is destroyed. The atlas textures themselves take a reference to the atlas and this is the only thing that keeps the atlas alive. This means that once the atlas becomes empty it will automatically be destroyed. All of the COGL_NOTEs pertaining to atlases are now prefixed with the atlas pointer to make it clearer which atlas is changing. cogl/cogl-atlas-texture-private.h | 10 ++-- cogl/cogl-atlas-texture.c | 105 +++++++++++++++++++++++++----------- cogl/cogl-atlas.c | 19 ++++--- cogl/cogl-atlas.h | 3 - cogl/cogl-context.c | 5 +- cogl/cogl-context.h | 2 +- pango/cogl-pango-glyph-cache.c | 1 + 7 files changed, 93 insertions(+), 52 deletions(-) commit 0f0f763570b904591bdae10888a971a887e01f22 Author: Neil Roberts Date: Sat Nov 27 13:06:38 2010 +0000 cogl-atlas: Convert to be a CoglObject subclass To implement multiple atlases it will be useful to have ref-counting on the CoglAtlas so it makes sense to convert it to be a CoglObject. cogl/cogl-atlas.c | 10 ++++++++-- cogl/cogl-atlas.h | 8 +++++--- cogl/cogl-context.c | 2 +- pango/cogl-pango-glyph-cache.c | 4 ++-- 4 files changed, 16 insertions(+), 8 deletions(-) commit 03d33a6f4ddde77371e320122884911e8577316c Author: Neil Roberts Date: Tue Dec 7 13:44:45 2010 +0000 cogl-shader-boilerplate: Add the 3D texture extension on GLES2 To use the 3D texture extension on GLES2 it has to be enabled with the following line in GLSL: #extension GL_OES_texture_3D : enable cogl/cogl-shader.c | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-) commit 38971e4977e7d57fd543d598b08f902160b2093c Author: Neil Roberts Date: Tue Dec 7 10:38:51 2010 +0000 cogl2-path: Don't flush the enable flags All of the drawing needed in _cogl_add_path_to_stencil_buffer is done with the vertex attribute API so there should be no need to flush the enable flags to enable the vertex array. This was causing problems on GLES2 where the vertex array isn't available. cogl/cogl2-path.c | 5 ----- 1 files changed, 0 insertions(+), 5 deletions(-) commit dc1f1949d0f639a3ef60ebd69feeee935eced1bf Author: Neil Roberts Date: Sun Dec 5 18:02:05 2010 +0000 Remove the GLES2 wrapper The GLES2 wrapper is no longer needed because the shader generation is done within the GLSL fragend and vertend and any functions that are different for GLES2 are now guarded by #ifdefs. cogl/Makefile.am | 20 - cogl/cogl-atlas.c | 6 +- cogl/cogl-buffer.c | 4 - cogl/cogl-clip-stack.c | 13 +- cogl/cogl-context.c | 6 +- cogl/cogl-framebuffer.c | 6 +- cogl/cogl-pipeline-fragend-arbfp.c | 4 - cogl/cogl-pipeline-fragend-glsl.c | 4 - cogl/cogl-pipeline-opengl.c | 16 +- cogl/cogl-pipeline-progend-glsl.c | 34 +- cogl/cogl-pipeline-vertend-glsl.c | 24 + cogl/cogl-pixel-array.c | 4 - cogl/cogl-texture-2d.c | 2 + cogl/cogl-texture-3d.c | 2 + cogl/cogl-vertex-attribute.c | 1 - cogl/cogl.c | 16 +- cogl/driver/gles/cogl-context-driver-gles.c | 6 - cogl/driver/gles/cogl-context-driver-gles.h | 4 - cogl/driver/gles/cogl-fixed-vertex-shader.glsl | 73 -- cogl/driver/gles/cogl-gles.c | 4 + cogl/driver/gles/cogl-gles2-wrapper.c | 993 ------------------------ cogl/driver/gles/cogl-gles2-wrapper.h | 388 --------- cogl/driver/gles/cogl-texture-driver-gles.c | 6 +- 23 files changed, 81 insertions(+), 1555 deletions(-) commit 2b32a9eb2a2a87f8bf7d885fe3a2163fd97b9624 Author: Neil Roberts Date: Mon Dec 6 21:29:56 2010 +0000 cogl-pipeline: Use enums for the layer combine values Once the GLES2 wrapper is removed then we won't have the GLenums needed for setting up the layer combine state. This adds Cogl enums instead which have the same values as the corresponding GLenums. The enums are: CoglPipelineCombineFunc CoglPipelineCombineSource and CoglPipelineCombineOp cogl/cogl-pipeline-fragend-arbfp.c | 41 +++++++------- cogl/cogl-pipeline-fragend-glsl.c | 48 +++++++++------- cogl/cogl-pipeline-private.h | 46 +++++++++++++-- cogl/cogl-pipeline.c | 107 +++++++++++++++++++++--------------- 4 files changed, 148 insertions(+), 94 deletions(-) commit a05c701e6b354f699b0886eb16b3863ed735d3c5 Author: Neil Roberts Date: Mon Dec 6 12:31:51 2010 +0000 cogl: upload matrices with uniforms on GLES2 Once the GLES2 wrapper is removed we won't be able to upload the matrices with the fixed function API any more. The fixed function API gives a global state for setting the matrix but if a custom shader uniform is used for the matrices then the state is per program. _cogl_matrix_stack_flush_to_gl is called in a few places and it is assumed the current pipeline doesn't need to be flushed before it is called. To allow these semantics to continue to work, on GLES2 the matrix flush now just stores a reference to the matrix stack in the CoglContext. A pre_paint virtual is added to the progend which is called whenever a pipeline is flushed, even if the same pipeline was flushed already. This gives the GLSL progend a chance to upload the matrices to the uniforms. The combined modelview/projection matrix is only calculated if it is used. The generated programs end up never using the modelview or projection matrix so it usually only has to upload the combined matrix. When a matrix stack is flushed a reference is taked to it by the pipeline progend and the age is stored so that if the same state is used with the same program again then we don't need to reupload the uniform. cogl/cogl-context.c | 12 ++ cogl/cogl-context.h | 10 ++ cogl/cogl-matrix-stack.c | 127 +++++++++++++---- cogl/cogl-matrix-stack.h | 10 ++ cogl/cogl-pipeline-opengl.c | 7 + cogl/cogl-pipeline-private.h | 4 + cogl/cogl-pipeline-progend-glsl.c | 250 ++++++++++++++++++++++++++++++++- cogl/cogl-pipeline-vertend-glsl.c | 4 + cogl/driver/gles/cogl-gles2-wrapper.c | 2 + 9 files changed, 396 insertions(+), 30 deletions(-) commit 35b07f6b8394c0ca371183f9bd2709812c884754 Author: Neil Roberts Date: Fri Dec 10 17:42:39 2010 +0000 cogl-matrix-stack: Add _cogl_matrix_stack_has_identity_flag This adds an internal function to quickly determine whether the top of the matrix stack is known to be the identity matrix. cogl/cogl-matrix-stack.c | 6 ++++++ cogl/cogl-matrix-stack.h | 7 +++++++ 2 files changed, 13 insertions(+), 0 deletions(-) commit c11f72fd6d226037a20aba14caae3bd4d3b30858 Author: Neil Roberts Date: Fri Dec 10 16:06:16 2010 +0000 cogl-matrix-stack: Convert to be a CoglObject We will want to use ref-counting on the CoglMatrixStack so it might as well be a CoglObject. cogl/cogl-framebuffer.c | 4 ++-- cogl/cogl-matrix-stack.c | 13 ++++++++++--- cogl/cogl-matrix-stack.h | 3 --- cogl/cogl-pipeline-opengl.c | 2 +- 4 files changed, 13 insertions(+), 9 deletions(-) commit d678125dd480e6587e6d116fe5e517b9db05db09 Author: Robert Bragg Date: Fri Dec 10 11:34:02 2010 +0000 matrix-stack: Make header style consistent Cogl doesn't follow the Clutter/GTK+ columnized function prototype style so this updates cogl-matrix-stack.h to match the other Cogl headers. cogl/cogl-matrix-stack.c | 2 +- cogl/cogl-matrix-stack.h | 126 +++++++++++++++++++++++++++------------------- 2 files changed, 76 insertions(+), 52 deletions(-) commit 104961de6a2c5acc9ed735f623abd5242e19f313 Author: Robert Bragg Date: Fri Dec 10 11:13:09 2010 +0000 matrix-stack: Adds a stack age counter Sometimes it would be useful if we could efficiently track when a matrix stack has been modified. For example on GLES2 we have to upload the modelview as a uniform to our glsl programs but because the modelview state is part of the framebuffer state it becomes a bit more tricky to know when to re-sync the value of the uniform with the framebuffer state. This adds an "age" counter to CoglMatrixStack which is incremented for any operation that effectively modifies the top of the stack so now we can save the age of the stack inside the pipeline whenever we update modelview uniform and later compare that with the stack to determine if it has changed. cogl/cogl-matrix-stack.c | 18 ++++++++++++++++++ cogl/cogl-matrix-stack.h | 2 ++ 2 files changed, 20 insertions(+), 0 deletions(-) commit 566831de665aa164320232ba3744e9464306b5e9 Author: Neil Roberts Date: Mon Dec 6 12:31:16 2010 +0000 cogl-pipeline: Add internal API to get the layer matrix This returns the layer matrix given a pipeline and a layer index. The API is kept as internal because it directly returns a pointer into the layer private data to avoid a copy into an out-param. We might also want to add a public function which does the copy. cogl/cogl-pipeline-private.h | 4 ++++ cogl/cogl-pipeline.c | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 0 deletions(-) commit e38e9e03555ed8b3af3fb1fbc52767196cd3e481 Author: Neil Roberts Date: Fri Dec 3 17:46:16 2010 +0000 cogl-vertex-attribute: Use glVertexAttribPointer on GLES2 When the GLES2 wrapper is removed we can't use the fixed function API such as glColorPointer to set the builtin attributes. Instead the GLSL progend now maintains a cache of attribute locations that are queried with glGetAttribLocation. The code that previously maintained a cache of the enabled texture coord arrays has been modified to also cache the enabled vertex attributes under GLES2. The vertex attribute API is now the only place that is using this cache so it has been moved into cogl-vertex-attribute.c cogl/cogl-bitmask.c | 16 +- cogl/cogl-bitmask.h | 10 +- cogl/cogl-context.c | 8 +- cogl/cogl-context.h | 8 +- cogl/cogl-internal.h | 6 - cogl/cogl-pipeline-opengl.c | 30 +++- cogl/cogl-pipeline-progend-glsl-private.h | 18 ++ cogl/cogl-pipeline-progend-glsl.c | 139 +++++++++++++ cogl/cogl-vertex-attribute-private.h | 3 + cogl/cogl-vertex-attribute.c | 311 ++++++++++++++++++++++------- cogl/cogl.c | 36 +--- 11 files changed, 451 insertions(+), 134 deletions(-) commit 12b3d21aaac6f3091c7b23a34afdb67050a7a3ab Author: Neil Roberts Date: Fri Dec 3 11:31:09 2010 +0000 cogl-path: Stroke using the vertex attribute API Previously when stroking a path it was flushing a pipeline and then directly calling glDrawArrays to draw the line strip from the path nodes array. This patch changes it to build a CoglVertexArray and a series of attributes to paint with instead. The vertex array and attributes are attached to the CoglPath so it can be reused later. The old vertex array for filling has been renamed to fill_vbo. cogl/cogl-path-private.h | 12 ++- cogl/cogl2-path.c | 201 +++++++++++++++++++++++++++++++--------------- 2 files changed, 143 insertions(+), 70 deletions(-) commit 79732c664160e9a6a2c809cc20bbf4086bc79e0b Author: Neil Roberts Date: Thu Dec 2 22:19:44 2010 +0000 cogl: Move COGL_DEBUG=show-source into cogl-shader.c The code to display the source when the show-source debug option is given has been moved to _cogl_shader_set_source_with_boilerplate so that it will show both user shaders and generated shaders. It also shows the code with the full boilerplate. To make it the same for ARBfp, cogl_shader_compile_real now also dumps user ARBfp shaders. cogl/cogl-pipeline-fragend-glsl.c | 5 ----- cogl/cogl-pipeline-vertend-glsl.c | 5 ----- cogl/cogl-shader.c | 23 +++++++++++++++++++++++ 3 files changed, 23 insertions(+), 10 deletions(-) commit fa13f6c1078dd3f67b18048afbe4ef271b4804e4 Author: Neil Roberts Date: Thu Dec 2 20:48:45 2010 +0000 cogl: Add a vertend to generate GLSL The GLSL vertend is mostly only useful for GLES2. The fixed function vertend is kept at higher priority than the GLSL vertend so it is unlikely to be used in any other circumstances. cogl/Makefile.am | 2 + cogl/cogl-context.c | 3 +- cogl/cogl-context.h | 3 +- cogl/cogl-pipeline-fragend-arbfp.c | 3 +- cogl/cogl-pipeline-fragend-fixed.c | 10 +- cogl/cogl-pipeline-fragend-glsl.c | 13 +- cogl/cogl-pipeline-opengl.c | 130 +++++++--- cogl/cogl-pipeline-private.h | 30 ++- cogl/cogl-pipeline-progend-glsl.c | 83 ++++-- cogl/cogl-pipeline-vertend-fixed.c | 28 ++ cogl/cogl-pipeline-vertend-glsl-private.h | 39 +++ cogl/cogl-pipeline-vertend-glsl.c | 396 +++++++++++++++++++++++++++++ cogl/cogl-pipeline.c | 7 + cogl/driver/gles/cogl-gles2-wrapper.c | 19 +- 14 files changed, 679 insertions(+), 87 deletions(-) commit e98bd86e0a2f03d87e7987d4f520f804738a201e Author: Neil Roberts Date: Tue Dec 7 12:33:39 2010 +0000 cogl-shader-boilerplate: Don't put the color attrib in location 0 Due to Mesa bug 28585 calling glVertexAttrib with attrib location 0 doesn't appear to work. This patch just reorders the vertex and color attributes in the shader in the hope that Mesa will assign the color attribute to a different location. cogl/cogl-shader-boilerplate.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 4232de637abdb05ef3c6bb5fec5fbaed63670eb1 Author: Neil Roberts Date: Thu Dec 2 22:08:51 2010 +0000 cogl-shader-boilerplate: Add more builtins for GLES2 Some builtin attributes such as the matrix uniforms and some varyings were missing from the boilerplate for GLES2. This also moves the texture matrix and texture coord attribute declarations to cogl-shader.c so that they can be dynamically defined depending on the number of texture coord arrays enabled. cogl/cogl-shader-boilerplate.h | 23 ++++++++++++++++++++--- cogl/cogl-shader.c | 30 ++++++++++++++++++++++++------ 2 files changed, 44 insertions(+), 9 deletions(-) commit 0c732c27ae01c50ae1ddaf2cf429cab2685f790a Author: Neil Roberts Date: Thu Dec 2 18:05:22 2010 +0000 cogl-pipeline: Rename the fragment_{source,header}_buffer to codegen We want to reuse the same buffers for vertends so calling them fragment_* doesn't make sense. cogl/cogl-context.c | 4 ++-- cogl/cogl-context.h | 4 ++-- cogl/cogl-pipeline-fragend-arbfp.c | 4 ++-- cogl/cogl-pipeline-fragend-glsl.c | 8 ++++---- cogl/cogl-pipeline-progend-glsl.c | 12 ++++++------ 5 files changed, 16 insertions(+), 16 deletions(-) commit 3cf9159769e76ed5cc44c8b689cd549d1c7616f1 Author: Neil Roberts Date: Mon Nov 29 18:32:21 2010 +0000 cogl: Add a fixed function vertend The vertends are intended to flush state that would be represented in a vertex program. Code to handle the layer matrix, lighting and point size has now been moved from the common cogl-pipeline-opengl backend to the fixed vertend. cogl/Makefile.am | 2 + cogl/cogl-pipeline-opengl.c | 109 ++++++++++++++++++++------- cogl/cogl-pipeline-private.h | 34 ++++++++- cogl/cogl-pipeline-vertend-fixed-private.h | 36 +++++++++ cogl/cogl-pipeline-vertend-fixed.c | 114 ++++++++++++++++++++++++++++ cogl/cogl-pipeline.c | 80 ++++++++++++++++++- 6 files changed, 342 insertions(+), 33 deletions(-) commit 9b1ab9f0ec79fb3bb9f35ea86646c4640a37a639 Author: Neil Roberts Date: Thu Dec 2 14:00:46 2010 +0000 cogl: Add a GLSL 'progend' 'progend' is short for 'program backend'. The progend is intended to operate on combined state from a fragment backend and a vertex backend. The progend has an 'end' function which is run whenever the pipeline is flushed and the two pipeline change notification functions. All of the progends are run whenever the pipeline is flushed instead of selecting a single one because it is possible that multiple progends may be in use for example if the vertends and fragends are different. The GLSL progend will take the shaders generated by the fragend and vertend and link them into a single program. The fragend code has been changed to only generate the shader and not the program. The idea is that pipelines can share fragment shader objects even if their vertex state is different. The authority for the progend needs to be the combined authority on the vertend and fragend state. cogl/Makefile.am | 2 + cogl/cogl-pipeline-fragend-glsl-private.h | 3 + cogl/cogl-pipeline-fragend-glsl.c | 725 ++++++++--------------------- cogl/cogl-pipeline-opengl.c | 5 + cogl/cogl-pipeline-private.h | 29 ++ cogl/cogl-pipeline-progend-glsl-private.h | 36 ++ cogl/cogl-pipeline-progend-glsl.c | 542 +++++++++++++++++++++ cogl/cogl-pipeline.c | 39 ++- 8 files changed, 839 insertions(+), 542 deletions(-) commit 91132871ad9b2347edc790cb4f7fe95bbc599c43 Author: Neil Roberts Date: Thu Dec 2 13:54:15 2010 +0000 cogl-program: Add private functions to check if have each shader type This adds two internal functions: gboolean _cogl_program_has_fragment_shader (CoglHandle handle); gboolean _cogl_program_has_vertex_shader (CoglHandle handle); They just check whether any of the contained shaders are of that type. cogl/cogl-program-private.h | 6 ++++++ cogl/cogl-program.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 0 deletions(-) commit 7562a176858881b9a95120b1c4a1cf1b19c25441 Author: Neil Roberts Date: Wed Dec 1 17:06:18 2010 +0000 cogl-pipeline: Make find codegen authority more general The pipeline function _cogl_pipeline_find_codegen_authority has been renamed to _cogl_pipeline_find_equivalent_parent and it now takes a set of flags for the pipeline and layer state that affects the authority. This is needed so that we can reuse the same code in the vertend and progends. cogl/cogl-pipeline-fragend-arbfp.c | 47 ++++--------- cogl/cogl-pipeline-fragend-glsl.c | 9 ++- cogl/cogl-pipeline-private.h | 39 +++++++++-- cogl/cogl-pipeline.c | 137 ++++++++++++++++-------------------- 4 files changed, 116 insertions(+), 116 deletions(-) commit 6b7139b0080b5b11e5562ebcc6442a5a0e8b850e Author: Neil Roberts Date: Tue Nov 30 12:48:27 2010 +0000 cogl-pipeline: Move texture enabling/disabling to fixed fragend Previously enabling and disabling textures was done whatever the backend in cogl-pipeline-opengl. However enabling and disabling texture targets only has any meaning if no fragment shaders are being used so this patch moves the code to cogl-pipeline-fragend-fixed. The GLES2 wrapper has also been changed to ignore enabledness when deciding whether to update texture coordinate attribute pointers. cogl/cogl-pipeline-fragend-arbfp.c | 7 -- cogl/cogl-pipeline-fragend-fixed.c | 107 ++++++++++++++++++++++++++++++++- cogl/cogl-pipeline-fragend-glsl.c | 7 -- cogl/cogl-pipeline-opengl-private.h | 16 ++--- cogl/cogl-pipeline-opengl.c | 95 +++++------------------------ cogl/cogl-pipeline-private.h | 2 - cogl/driver/gles/cogl-gles2-wrapper.c | 67 +++++++++----------- 7 files changed, 157 insertions(+), 144 deletions(-) commit 0098dc7acccff51f2b50ac0ff4aba69be005a687 Author: Neil Roberts Date: Mon Nov 29 16:56:41 2010 +0000 Rename CoglPipelineBackend to CoglPipelineFragend The current Cogl pipeline backends are entirely concerned with the fragment processing state. We also want to eventually have separate backends to generate shaders for the vertex processing state so we need to rename the fragment backends. 'Fragend' is a somewhat weird name but we wanted to avoid ending up with illegible symbols like CoglPipelineFragmentBackendGlslPrivate. cogl/Makefile.am | 12 +- cogl/cogl-context.c | 6 +- cogl/cogl-pipeline-arbfp-private.h | 42 - cogl/cogl-pipeline-arbfp.c | 1133 ------------------------- cogl/cogl-pipeline-fixed-private.h | 36 - cogl/cogl-pipeline-fixed.c | 260 ------ cogl/cogl-pipeline-fragend-arbfp-private.h | 43 + cogl/cogl-pipeline-fragend-arbfp.c | 1133 +++++++++++++++++++++++++ cogl/cogl-pipeline-fragend-fixed-private.h | 36 + cogl/cogl-pipeline-fragend-fixed.c | 260 ++++++ cogl/cogl-pipeline-fragend-glsl-private.h | 36 + cogl/cogl-pipeline-fragend-glsl.c | 1263 ++++++++++++++++++++++++++++ cogl/cogl-pipeline-glsl-private.h | 36 - cogl/cogl-pipeline-glsl.c | 1263 ---------------------------- cogl/cogl-pipeline-opengl.c | 66 +- cogl/cogl-pipeline-private.h | 48 +- cogl/cogl-pipeline.c | 100 ++-- 17 files changed, 2887 insertions(+), 2886 deletions(-) commit 6ce210062debddf6dd1099bf0150dd6e1e4e1c2a Author: Neil Roberts Date: Thu Dec 2 15:37:53 2010 +0000 cogl-pipeline-opengl: Remove the includes for the various backends Nothing in cogl-pipeline-opengl needs to know about the actual backend implementations, instead it just accesses then through the vtables. cogl/cogl-pipeline-opengl.c | 10 ---------- 1 files changed, 0 insertions(+), 10 deletions(-) commit 42c991fa24c1644ddf357a549bd76db89180bcfd Author: Emmanuele Bassi Date: Thu Dec 9 15:52:04 2010 +0000 docs: Add 1.6 index to the API references doc/reference/cogl/cogl-docs.xml.in | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit 83bfa4558403aa9486b476e22d8d22c537a4d30a Merge: 87f979c d2326d4 Author: Emmanuele Bassi Date: Thu Dec 9 11:58:10 2010 +0000 Merge remote branch 'elliot/cookbook-animations-looping-new-api' * elliot/cookbook-animations-looping-new-api: cookbook: Use new API to reverse timeline commit 87f979cfd869c0a911362644aadba7b829b3c267 Author: Robert Bragg Date: Wed Dec 8 18:57:42 2010 +0000 pipeline: don't dereference NULL program state This avoid dereferencing a NULL arbfp program state in _cogl_pipeline_backend_arbfp_layer_pre_change_notify for _STATE_COMBINE_CONSTANT changes. cogl/cogl-pipeline-arbfp.c | 12 ++++++++---- 1 files changed, 8 insertions(+), 4 deletions(-) commit 82f6800442a3d9416bd129337375929dab5006af Author: Robert Bragg Date: Wed Dec 8 16:29:37 2010 +0000 arbfp: Copy pipelines used as cache keys We are currently using a pipeline as a key into our arbfp program cache but because we weren't making a copy of the pipelines used as keys there were times when doing a lookup in the cache would end up trying to compare a lookup key with an entry key that would point to invalid memory. Note: the current approach isn't ideal from the pov that that key pipeline may reference some arbitrarily large user textures will now be kept alive indefinitely. The plan to improve on this is that we will have a mechanism to create a special "key pipeline" which will derive from the default Cogl pipeline (to avoid affecting the lifetime of other pipelines) and only copy state from the original pipeline that affects the arbfp program and will reference small dummy textures instead of potentially large user textures. cogl/cogl-pipeline-arbfp.c | 34 +++++++++++++++++++++++++++++++++- 1 files changed, 33 insertions(+), 1 deletions(-) commit ba95ee66a32414fbe389ae6071d2140b9779251a Author: Robert Bragg Date: Wed Dec 8 16:27:57 2010 +0000 arbfp: initialize arbfp_program_state->next_constant_id When allocating a new ArbfpProgramState struct when starting code generation we weren't initializing arbfp_program_state->next_constant_id to 0. cogl/cogl-pipeline-arbfp.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit ea8c9f3b2786a1d479d578239d1251acd5f53c58 Author: Robert Bragg Date: Wed Dec 8 16:23:10 2010 +0000 pipeline: Clarify stages for finding an arbfp program In the arbfp backend there is a seqential approach to finding a suitable arbfp program to use for a given pipeline; first we see if there's already a program associated with the pipeline, 2nd we try and find a program associated with the "arbfp-authority" 3rd we try and lookup a program in a cache and finally we resort to starting code-generation for a new program. This patch slightly reworks the code of these steps to hopefully make them a bit clearer. cogl/cogl-pipeline-arbfp.c | 104 ++++++++++++++++++++++++++------------------ 1 files changed, 61 insertions(+), 43 deletions(-) commit 62a12a16a2a494bed152d768f0dae89a4dad37de Author: Neil Roberts Date: Mon Dec 6 21:14:33 2010 +0000 cogl-pipeline: Fix the layer_has_alpha_cb _cogl_pipeline_needs_blending_enabled tries to determine whether each layer is using the default combine state. However it was using argument 0 for both checks so the if-statement would never be true. cogl/cogl-pipeline.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 3984f79c283a462a4bd4a67553a4f4554074a0b6 Author: Robert Bragg Date: Wed Dec 8 11:38:56 2010 +0000 pipeline: remove unused HashState member There was an unused pipeline_differences member as part of the HashState struct which this patch remove to avoid confusion. cogl/cogl-pipeline.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit 778700288e3c0a89cfe1c284af7557698717b750 Author: Robert Bragg Date: Wed Dec 8 11:35:16 2010 +0000 pipeline: initialize HashState flags member There are a set of "EvalFlags" that get passed to _cogl_pipeline_hash that can tweak the semantics of what state is evaluated for hashing but these flags weren't getting passed via the HashState state structure so it would be undefined if you would get the correct semantics. cogl/cogl-pipeline.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit e7535c6b6a95478641671793ab3aa7e022b16d18 Author: Robert Bragg Date: Wed Dec 8 11:30:00 2010 +0000 pipeline: don't use near/far symbols According to 9cc90333473e3 the windows headers #define near as nothing, and presumable the same is true for 'far' too. Apparently this define is to improve compatibility with code written for Windows 3.1, so it's good that people will be able to incorporate such code into their Clutter applications. cogl/cogl-pipeline.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 19562fc97205664db5c48a9123dc24b575807df3 Author: Robert Bragg Date: Tue Dec 7 16:44:36 2010 +0000 context: only declare arbfp cache for GL We were trying to declare and initializing an arbfp program cache for GLES but since the prototypes for the _hash and _equal functions were only available for GL this broke the GLES builds. By #ifdefing the code to conditionally declare/initialize for GL only this should hopefully fix GLES builds. cogl/cogl-context.c | 4 ++++ cogl/cogl-context.h | 2 ++ 2 files changed, 6 insertions(+), 0 deletions(-) commit 6112ebd723fd5840d56a0a531587345f2a4ef4e7 Author: Robert Bragg Date: Tue Dec 7 16:36:44 2010 +0000 pipeline: remove spurious use of True instead of TRUE The constant 'True' is defined by Xlib which isn't used for all clutter builds so this replaces occurrences of True with TRUE which is defined by glib. This should hopefully fix the win32 builds. cogl/cogl-pipeline.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 0087910574e448b534186d98764652e8c222af9d Author: Robert Bragg Date: Fri Dec 3 12:01:18 2010 +0000 arbfp: Adds an ARBfp program cache This adds a cache (A GHashTable) of ARBfp programs and before ever starting to code-generate a new program we will always first try and find an existing program in the cache. This uses _cogl_pipeline_hash and _cogl_pipeline_equal to hash and compare the keys for the cache. There is a new COGL_DEBUG=disable-program-caches option that can disable the cache for debugging purposes. cogl/cogl-context.c | 6 ++ cogl/cogl-context.h | 2 + cogl/cogl-debug-options.h | 5 ++ cogl/cogl-debug.c | 8 ++- cogl/cogl-debug.h | 3 +- cogl/cogl-pipeline-arbfp-private.h | 6 ++ cogl/cogl-pipeline-arbfp.c | 111 +++++++++++++++++++++++++++++------ 7 files changed, 118 insertions(+), 23 deletions(-) commit 046434e222cff3717a0a2c46cdfb6b399621511a Author: Robert Bragg Date: Thu Nov 4 13:57:36 2010 +0000 pipeline: Implements _cogl_pipeline_hash function This allows us to get a hash for a set of state groups for a given pipeline. This can be used for example to get a hash of the fragment processing state of a pipeline so we can implement a cache for compiled arbfp/glsl programs. cogl/cogl-color-private.h | 5 + cogl/cogl-context.c | 2 + cogl/cogl-pipeline-private.h | 18 ++- cogl/cogl-pipeline.c | 520 ++++++++++++++++++++++++++++++++++++++++++ cogl/cogl-util.c | 9 + cogl/cogl-util.h | 27 +++ 6 files changed, 580 insertions(+), 1 deletions(-) commit 2c9cd76baa76aa6ad4b6612bece7585ba9ed95b2 Author: Robert Bragg Date: Fri Dec 3 11:36:49 2010 +0000 pipeline: generalize _cogl_pipeline_equal _cogl_pipeline_equal now accepts a mask of pipeline differences and layer differences to constrain what state will be compared. In addition a set of flags are passed that can tweak the comparison semantics for some state groups. For example when comparing layer textures we sometimes only need to compare the texture target and can ignore the data itself. In updating the code this patch also changes it so all required pipeline authorities are resolved in one step up-front instead of resolving the authority for each state group in turn and repeatedly having to traverse the pipeline's ancestry. This adds two new functions _cogl_pipeline_resolve_authorities and _cogl_pipeline_layer_resolve_authorities to handle resolving a set of authorities. cogl/cogl-journal.c | 9 +- cogl/cogl-pipeline-private.h | 155 ++++++++++++++++------- cogl/cogl-pipeline.c | 287 ++++++++++++++++++++++++++++------------- 3 files changed, 312 insertions(+), 139 deletions(-) commit 8e899985c676d7b5cd37533082082a35bfac64e2 Author: Robert Bragg Date: Wed Dec 1 16:53:08 2010 +0000 pipeline: remove layer->backend_priv[] array This removes the unused array of per-packend priv data pointers associated with every CoglPipelineLayer. This reduces the size of all layer allocations and avoids having to zero an array for each _cogl_pipeline_layer_copy. cogl/cogl-pipeline-arbfp.c | 1 - cogl/cogl-pipeline-glsl.c | 3 +-- cogl/cogl-pipeline-private.h | 9 --------- cogl/cogl-pipeline.c | 24 ------------------------ 4 files changed, 1 insertions(+), 36 deletions(-) commit ae3a9eec7ca876d8bbfc7758671937a1c085ef81 Author: Robert Bragg Date: Wed Dec 1 16:37:25 2010 +0000 cogl-object: remove un-used cogl_object_get_type A non-static function named cogl_object_get_type was inadvertently added during the addition of the CoglObject base type, but there is no public prototype in the headers and it's only referenced inside cogl-object.c to implement cogl_handle_get_type() for compatibility. This removes the function since we don't want to commit to CoglObject always simply being a boxed type. In the future we may want to register hierarchical GTypeInstance based types. cogl/cogl-object.c | 8 +------- 1 files changed, 1 insertions(+), 7 deletions(-) commit fd10e3a545f071e3006694cd1c0baa8dd2bd0914 Author: Robert Bragg Date: Mon Nov 29 21:42:06 2010 +0000 matrix gtype: registers a boxed type for CoglMatrix To allow us to have gobject properties that accept a CoglMatrix value we need to register a GType. This adds a cogl_gtype_matrix_get_type function that will register a static boxed type called "CoglMatrix". This adds a new section to the reference manual for GType integration functions. cogl/Makefile.am | 1 + cogl/cogl-gtype-private.h | 48 ++++++++++++++++++++++++++++++++++ cogl/cogl-matrix.c | 7 +++++ cogl/cogl-matrix.h | 16 +++++++++++ cogl/cogl.h | 6 ++++ doc/reference/cogl/cogl-docs.xml.in | 1 + doc/reference/cogl/cogl-sections.txt | 6 ++++ 7 files changed, 85 insertions(+), 0 deletions(-) commit 3ac023163fc64b0bddfa891430b5a2e1ca9e0fd1 Author: Robert Bragg Date: Mon Nov 29 18:47:10 2010 +0000 matrix: Adds matrix_copy and _free functions As a pre-requisite for being able to register a boxed GType for CoglMatrix (enabling us to define gobject properties that accept a CoglMatrix) this adds cogl_matrix_copy and _free functions. cogl/cogl-matrix.c | 15 +++++++++++++++ cogl/cogl-matrix.h | 27 +++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 0 deletions(-) commit 98dd3f723c19b1d9f5a249d6bd08db58c76eabba Author: Robert Bragg Date: Fri Dec 3 16:59:52 2010 +0000 pipeline simple optimization for _needs_blending_enabled In _cogl_pipeline_needs_blending_enabled after first checking whether the property most recently changed requires blending we would then resort to checking all other properties too in case some other state also requires blending. We now avoid checking all other properties in the case that blending was previously disabled and checking the property recently changed doesn't require blending. Note: the plan is to improve this further by explicitly keeping track of the properties that currently cause blending to be enabled so that we never have to resort to checking all other properties we can constrain the checks to those masked properties. cogl/cogl-pipeline.c | 17 +++++++++++++---- 1 files changed, 13 insertions(+), 4 deletions(-) commit 6b08583f2f08d4737d3a436f440cdf52c2d70108 Author: Robert Bragg Date: Fri Dec 3 16:56:54 2010 +0000 pipeline: inline _get_parent and _get_authority This moves _cogl_pipeline_get_parent and _cogl_pipeline_get_authority into cogl-pipeline-private.h so they can be inlined since they have been seen to get quite high in profiles. Given that they both contain such small amounts of code the function call overhead is significant. cogl/cogl-pipeline-private.h | 17 +++++++++++++++++ cogl/cogl-pipeline.c | 17 ----------------- 2 files changed, 17 insertions(+), 17 deletions(-) commit e292d28c5657e300d4128f15968930832dfefa0a Author: Neil Roberts Date: Wed Nov 10 14:02:31 2010 +0000 Add a COGL_DEBUG option to disable software clipping This adds a debug option called disable-software-clipping which causes the journal to always log the clip stack state rather than trying to manually clip rectangles. cogl/cogl-debug-options.h | 5 +++++ cogl/cogl-debug.c | 3 ++- cogl/cogl-debug.h | 3 ++- cogl/cogl-journal.c | 23 +++++++++++++---------- 4 files changed, 22 insertions(+), 12 deletions(-) commit 1d88e6c8acdbbad6c9285ab92ea435eb7d3c0840 Author: Neil Roberts Date: Tue Nov 9 19:18:37 2010 +0000 cogl-journal: Attempt to clip manually to avoid breaking up batches Before flushing the journal there is now a separate iteration that will try to determine if the matrix of the clip stack and the matrix of the rectangle in each entry are on the same plane. If they are it can completely avoid the clip stack and instead manually modify the vertex and texture coordinates to implement the clip. The has the advantage that it won't break up batching if a single clipped rectangle is used in a scene. The software clip is only used if there is no user program and no texture matrices. There is a threshold to the size of the batch where it is assumed that it is worth the cost to break up a batch and program the GPU to do the clipping. Currently this is set to 8 although this figure is plucked out of thin air. To check whether the two matrices are on the same plane it tries to determine if one of the matrices is just a simple translation of the other. In the process of this it also works out what the translation would be. These values can be used to translate the clip rectangle into the coordinate space of the rectangle to be logged. Then we can do the clip directly in the rectangle's coordinate space. cogl/cogl-context.c | 3 + cogl/cogl-context.h | 1 + cogl/cogl-journal-private.h | 2 + cogl/cogl-journal.c | 363 ++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 363 insertions(+), 6 deletions(-) commit 7294e5552c943fa9851af8fa41f6f3fa68029830 Author: Neil Roberts Date: Tue Nov 9 19:09:25 2010 +0000 cogl-clip-stack: Move the struct definitions to the header It will be useful to be able to directly examine the contents of the clip stack within the journal code. cogl/cogl-clip-stack.c | 112 ----------------------------------------------- cogl/cogl-clip-stack.h | 114 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+), 112 deletions(-) commit 07e49d5257abd3ad58a238b02ade18b8ae0d5475 Author: Neil Roberts Date: Tue Nov 9 12:01:04 2010 +0000 cogl-clip-stack: Don't convert rect clips to window clips Previously in cogl-clip-state.c when it detected that the current modelview matrix is screen-aligned it would convert the clip entry to a window clip. Instead of doing this cogl-clip-stack.c now contains the detection and keeps the entry as a rectangle clip but marks that it is entirely described by its scissor rect. When flusing the clip stack it doesn't do anything extra for entries that have this mark (because the clip will already been setup by the scissor). This is needed so that we can still track the original rectangle coordinates and modelview matrix to help detect when it would be faster to modify the rectangle when adding it to the journal rather than having to break up the batch to set the clip state. cogl/cogl-clip-stack.c | 109 ++++++++++++++++++++++++++++++++++++----------- cogl/cogl-clip-state.c | 55 ------------------------ 2 files changed, 83 insertions(+), 81 deletions(-) commit b14c2f799c880ab1012d72007e61074de5ee3e6c Author: Neil Roberts Date: Thu Nov 25 21:08:45 2010 +0000 cogl-journal: Defer expanding the vertices until uploading When logging a quad we now only store the 2 vertices representing the top left and bottom right of the quad. The color is only stored once per entry. Once we come to upload the data we expand the 2 vertices into four and copy the color to each vertex. We do this by mapping the buffer and directly expanding into it. We have to copy the data before we can render it anyway so it doesn't make much sense to expand the vertices before uploading and this way should save some space in the size of the journal. It also makes it slightly easier if we later want to do pre-processing on the journal entries before uploading such as doing software clipping. The modelview matrix is now always copied to the journal entry whereas before it would only be copied if we aren't doing software transform. The journal entry struct always has the space for the modelview matrix so hopefully it's only a small cost to copy the matrix. The transform for the four entries is now done using cogl_matrix_transform_points which may be slightly faster than transforming them each individually with a call to cogl_matrix_transfom. cogl/cogl-context.h | 1 + cogl/cogl-journal.c | 273 ++++++++++++++++++++++++++++++++------------------- 2 files changed, 173 insertions(+), 101 deletions(-) commit f8449582c8dc974bd9adb33fd3dc00d2d1217c95 Author: Neil Roberts Date: Thu Dec 2 21:08:30 2010 +0000 Revert "cogl: Remove the generated array size for cogl_tex_coord_in" This reverts commit 4cfe90bde275dbb952645397aa2ba2d6f6e2f3ba. GLSL 1.00 on GLES doesn't support unsized arrays so the whole idea can't work. Conflicts: clutter/cogl/cogl/cogl-pipeline-glsl.c cogl/cogl-context.c | 2 +- cogl/cogl-pipeline-arbfp.c | 3 +- cogl/cogl-pipeline-fixed.c | 3 +- cogl/cogl-pipeline-glsl.c | 52 +++++++- cogl/cogl-pipeline-opengl-private.h | 3 +- cogl/cogl-pipeline-opengl.c | 6 +- cogl/cogl-pipeline-private.h | 3 +- cogl/cogl-shader-boilerplate.h | 1 - cogl/cogl-shader-private.h | 6 + cogl/cogl-shader.c | 229 ++++++++++++++++++++++++++--------- cogl/cogl-vertex-attribute.c | 4 +- cogl/cogl.c | 9 ++- cogl/cogl2-path.c | 4 +- 13 files changed, 250 insertions(+), 75 deletions(-) commit f54cc7abd43b8f6919daf36f096f4f89520a6046 Author: Neil Roberts Date: Thu Dec 2 16:30:55 2010 +0000 cogl-pipeline-glsl: Fix reusing shaders for shared ancestors The check for whether we can reuse a program we've already generated was only being done if the pipeline already had a glsl_program_state. When there is no glsl_program_state it then looks for the nearest ancestor it can share the program with. It then wasn't checking whether that ancestor already had a GL program so it would start generating the source again. It wouldn't however compile that source again because _cogl_pipeline_backend_glsl_end does check whether there is already a program. This patch moves the check until after it has found the glsl_program_state, whether or not it was found from an ancestor or as its own state. cogl/cogl-pipeline-glsl.c | 32 +++++++++++++++----------------- 1 files changed, 15 insertions(+), 17 deletions(-) commit 6607306a2de23245ed7d36cdefc2dfc7883e61f2 Author: Neil Roberts Date: Thu Dec 2 12:27:29 2010 +0000 cogl: Remove the generated array size for cogl_tex_coord_in Under GLES2 we were defining the cogl_tex_coord_in varying as an array with a size determined by the number of texture coordinate arrays enabled whenever the program is used. This meant that we may have to regenerate the shader with a different size if the shader is used with more texture coord arrays later. However in OpenGL the equivalent builtin varying gl_TexCoord is simply defined as: varying vec4 gl_TexCoord[]; /* <-- no size */ GLSL is documented that if you declare an array with no size then you can only access it with a constant index and the size of the array will be determined by the highest index used. If you want to access it with a non-constant expression you need to redeclare the array yourself with a size. We can replicate the same behaviour in our Cogl shaders by instead declaring the cogl_tex_coord_in with no size. That way we don't have to pass around the number of tex coord attributes enabled when we flush a material. It also means that CoglShader can go back to directly uploading the source string to GL when cogl_shader_source is called so that we don't have to keep a copy of it around. If the user wants to access cogl_tex_coord_in with a non-constant index then they can simply redeclare the array themself. Hopefully developers will expect to have to do this if they are accustomed to the gl_TexCoord array. cogl/cogl-context.c | 2 +- cogl/cogl-pipeline-arbfp.c | 3 +- cogl/cogl-pipeline-fixed.c | 3 +- cogl/cogl-pipeline-glsl.c | 46 +------- cogl/cogl-pipeline-opengl-private.h | 3 +- cogl/cogl-pipeline-opengl.c | 6 +- cogl/cogl-pipeline-private.h | 3 +- cogl/cogl-shader-boilerplate.h | 1 + cogl/cogl-shader-private.h | 6 - cogl/cogl-shader.c | 229 +++++++++-------------------------- cogl/cogl-vertex-attribute.c | 4 +- cogl/cogl.c | 9 +-- cogl/cogl2-path.c | 4 +- 13 files changed, 73 insertions(+), 246 deletions(-) commit d2326d497ad24a5a75ad8ad350b82aa66f967bb7 Author: Neil Roberts Date: Wed Dec 1 15:48:37 2010 +0000 cogl-pipeline: Fix comparing layer states for finding codgen authority When compiling for GLES2, the codegen is affected by state other than the layers. That means when we find an authority for the codegen state we can't directly look at authority->n_layers to determine the number of layers because it isn't necessarily the layer state authority. This patch changes it to use cogl_pipeline_get_n_layers instead. Once we have two authorities that differ in codegen state we then compare all of the layers to decide if they would affect codegen. However it was ignoring the fact that the authorities might also differ by the other codegen state. This path also adds an extra check for whether _cogl_pipeline_compare_differences contains any codegen bits other than COGL_PIPELINE_STATE_LAYERS. cogl/cogl-pipeline.c | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-) commit cf50b4f614f08a5d4afc4dd39295ffd7787a10d6 Author: Neil Roberts Date: Wed Dec 1 14:39:28 2010 +0000 cogl-pipeline: Fix the codgen authority for texture target changes When determining if a layer would require a different shader to be generated it needs to check a certain set of state changes and it needs to check whether the texture target is different. However it was checking whether texture texture was different only if the other state was also different which doesn't make any sense. It also only checked the texture difference if that was the only state change which meant that effectively the code was impossible to reach. Now it does the texture target check indepent of the other state changes. cogl/cogl-pipeline.c | 29 ++++++++++++++--------------- 1 files changed, 14 insertions(+), 15 deletions(-) commit c492db38e03e2b73d6a131b83d9b3f32e1ad7d47 Author: Neil Roberts Date: Tue Nov 30 22:28:38 2010 +0000 cogl-pipeline-fixed: Use the correct state flag for combine constant The fixed pipeline backend wasn't correctly flushing the combine constant because it was using the wrong flag to determine if the combine constant has changed since the last flushed material. cogl/cogl-pipeline-fixed.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 7ea97b3eb7dedb5bf23525076a8b680881c2ecd9 Author: Neil Roberts Date: Tue Nov 30 22:17:17 2010 +0000 cogl-pipeline-opengl: Fix enabling previously disabled units When enabling a unit that was disabled from a previous flush pipeline it was forgetting to rebind the right texture unit so it wouldn't work. This was causing the redhand to disappear when using the fixed function backend in test-cogl-multitexture if anything else is added to the scene. cogl/cogl-pipeline-opengl.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 7d840de18f6bc44287e93112870ed02b614f421b Author: Neil Roberts Date: Tue Nov 30 22:15:40 2010 +0000 cogl-pipeline: Add more ignored state changes for program generation For shader generation backends we don't need to worry about changes to the texture object and changing the user matrix. The missing user matrix flag was causing test-cogl-multitexture to regenerate the shader every frame. cogl/cogl-pipeline-arbfp.c | 5 ++++- cogl/cogl-pipeline-glsl.c | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) commit e905087e70db1470c6114334e93680a11f469ebe Author: Damien Lespiau Date: Tue Nov 30 16:36:56 2010 +0000 cogl: Revert "build: Remove unused variable" Having ctx here produces a warning on GLES. However it's needed for Big GL as we have at the top of the file: #ifdef HAVE_COGL_GL #define glClientActiveTexture ctx->drv.pf_glClientActiveTexture #endif This reverts commit 27a3a2056a245aca64b8e3a7d82b7976c13e897a. cogl/cogl.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 8f6bf57dfbb5f35e1cd81d90bf45e6d93667bab4 Author: Damien Lespiau Date: Tue Nov 30 16:03:26 2010 +0000 cogl: Fix unused variable warning with GLES2 This shader variable is only used with big GL. cogl/cogl-shader.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 5eb800656d94327367191f15ccf9f39dde3da497 Author: Damien Lespiau Date: Fri Nov 19 14:51:39 2010 -0500 build: Remove unused variable and be 100% warning free again. cogl/cogl.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) commit 3cad93b8a201695339bd412e2f73d3ef52c9a3b2 Author: Neil Roberts Date: Mon Nov 29 10:55:49 2010 +0000 cogl-shader.c: Don't add the common boilerplate twice In 6246c2bd6 I moved the code to add the boilerplate to a shader to a separate function and also made it so that the common boilerplate is added as a separate string to glShaderSource. However I didn't notice that the #define for the vertex and fragment shaders already includes the common part so it was being added twice. Mesa seems to accept this but it was causing problems on the IMG driver because COGL_VERSION was defined twice. cogl/cogl-shader.c | 8 ++------ 1 files changed, 2 insertions(+), 6 deletions(-) commit 84dc0ad2eb5a6c1efd02945f435b72f6bf00ed1d Author: Neil Roberts Date: Mon Nov 29 10:51:40 2010 +0000 cogl-pipeline-glsl: Use char* instead of GLchar* It appears that some GLES2 headers don't define GLchar and it works just as well to use a regular char. cogl/cogl-pipeline-glsl.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 44678af8abd7745d10ebbde327781e354717efda Merge: 2f95704 38929d5 Author: Emmanuele Bassi Date: Mon Nov 29 11:56:36 2010 +0000 Merge remote branch 'elliot/cookbook-animations-scaling' * elliot/cookbook-animations-scaling: cookbook: Add recipe for animated scaling of an actor cookbook: Add example of scaling a texture cookbook: Added "animated scaling" recipe skeleton cookbook: Added animated scaling example commit 2f95704d0a0778ddb1c23cbb17d658335c0a35e1 Author: Neil Roberts Date: Fri Nov 26 15:23:15 2010 +0000 cogl_pipeline_equal: Fix the comparison for layer texture equality Before commit 49898d43 CoglPipeline would compare whether a pipeline layer's texture is equal by fetching the underlying GL handle. I changed that so that it would only compare the CoglHandles because that commit removes the GL handle texture overrides and sliced textures instead log the underlying primitive texture. However I forgot that the primitives don't always use _cogl_texture_foreach_sub_texture_in_region when the quad fits within the single texture so it won't use a texture override. This meant that atlas textures and sub textures get logged with the atlas handle so the comparison still needs to be done using the GL handles. It might be nice to add a CoglTexture virtual to get the underlying primitive texture instead to avoid having the pipeline poke around with GL handles. cogl/cogl-pipeline.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) commit a57e6e7214f217bc9368b702b1ee9610855d303d Author: Robert Bragg Date: Thu Nov 25 20:12:36 2010 +0000 primitives: avoid leaking polygon override materials If we have to make override changes to the user's source material to handle cogl_polygon then we need to make sure we unref the override material at the end. cogl/cogl-primitives.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit c64e0103afdf5d4f79137638657cfdacbddd34a8 Author: Alexandre Quessy Date: Thu Nov 25 13:13:51 2010 -0500 Fixed "the the" repetitions in some doc strings http://bugzilla.clutter-project.org/show_bug.cgi?id=2450 cogl/cogl-fixed.c | 2 +- cogl/cogl-vertex-buffer.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit cf647e327f96fdc956143f51e50289001a5b043a Author: Robert Bragg Date: Thu Nov 25 13:19:59 2010 +0000 pipeline: Simplify layer change notifications to backend Previously we used the layers->backend_priv[] members to determine when to notify backends about layer changes, but it entirely up to the backends if they want to associate private state with layers, even though they may still be interested in layer change notifications (they may associate layer related state with the owner pipeline). We now make the observation that in _cogl_pipeline_backend_layer_change_notify we should be able to assume there can only be one backend currently associated with the layer because we wouldn't allow changes to a layer with multiple dependants. This means we can determine the backend to notify by looking at the owner pipeline instead. cogl/cogl-pipeline.c | 22 ++++++++++------------ 1 files changed, 10 insertions(+), 12 deletions(-) commit 7474d320f6e1ea9bcfbaebfc3ba23de767386c20 Author: Neil Roberts Date: Wed Nov 24 18:37:47 2010 +0000 cogl-context: Get rid of the features_cached member The features_cached member of CoglContext is intended to mark when we've calculated the features so that we know if they are ready in cogl_get_features. However we always intialize the features while creating the context so features_cached will never be FALSE so it's not useful. We also had the odd behaviour that the COGL_DEBUG feature overrides were only applied in the first call to cogl_get_features. However there are other functions that use the feature flags such as cogl_features_available that don't use this function so in some cases the feature flags will be interpreted before the overrides are applied. This patch makes it always initialize the features and apply the overrides immediately while creating the context. This fixes a problem with COGL_DEBUG=disable-arbfp where the first material flushed is done before any call to cogl_get_features so it may still use ARBfp. cogl/cogl-context.c | 24 +++++++++++++++++++++++- cogl/cogl-context.h | 1 - cogl/cogl.c | 24 ------------------------ cogl/driver/gl/cogl-gl.c | 1 - cogl/driver/gles/cogl-gles.c | 1 - 5 files changed, 23 insertions(+), 28 deletions(-) commit bbf912b61d298ca3b1a3aff399c79c9ad493cb6a Author: Neil Roberts Date: Wed Nov 24 17:42:34 2010 +0000 Lower the priority of the GLSL pipeline backend Now that the GLSL backend can generate code it can effectively handle any pipeline unless there is an ARBfp program. However with current open source GL drivers the ARBfp compiler is more stable so it makes sense to prefer ARBfp when possible. The GLSL backend is also lower than the fixed function backend on the assumption that any driver that supports GLSL will also support ARBfp so it's quicker to try the fixed function backend next. cogl/cogl-pipeline-private.h | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) commit 4d0b167be4cab8ff6a89c0a4a66d37cd3ebeecad Author: Neil Roberts Date: Wed Nov 24 17:29:00 2010 +0000 Add a COGL_DEBUG option to disable the fixed function pipeline backend This adds COGL_DEBUG=disable-fixed to disable the fixed function pipeline backend. This is needed to test the GLSL shader generation because otherwise the fixed function backend would always override it. cogl/cogl-debug-options.h | 5 +++++ cogl/cogl-debug.c | 1 + cogl/cogl-debug.h | 15 ++++++++------- cogl/cogl-pipeline-fixed.c | 3 +++ 4 files changed, 17 insertions(+), 7 deletions(-) commit 54ac6b16bf4f51c21201483dd59af76ff2f7c851 Author: Neil Roberts Date: Wed Nov 24 17:33:07 2010 +0000 Don't use the fixed function backend if there is a user program The fixed function pipeline backend can't handle a user program so it should bail out if one is given. cogl/cogl-pipeline-fixed.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit 8083167be98b92cc65a786b5b37e35c840bbbcf8 Author: Neil Roberts Date: Wed Nov 24 17:37:55 2010 +0000 Add a warning message when no usable Cogl pipeline backend is found If none of the pipeline backends can handle the state then it now displays a warning so the developer has a chance to work out what's going on. cogl/cogl-pipeline-opengl.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit cda5ea771bd2f85d7c171c2ad6484e43e35a8bb3 Author: Neil Roberts Date: Wed Nov 24 15:30:56 2010 +0000 cogl-pipeline-glsl: Don't use gl_PointCoord on OpenGL We don't want to use gl_PointCoord to implement point sprites on big GL because in that case we already use glTexEnv(GL_COORD_REPLACE) to replace the texture coords with the point sprite coords. Although GL also supports the gl_PointCoord variable, it requires GLSL 1.2 which would mean we would have to declare the GLSL version and check for it. We continue to use gl_PointCoord for GLES2 because it has no glTexEnv function. cogl/cogl-pipeline-glsl.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) commit c50cb72748f708b8e4cf80a38c833403ef07f981 Author: Neil Roberts Date: Tue Nov 23 14:47:17 2010 +0000 Remove the fragment shader generation from the GLES2 wrapper The GLES2 wrapper no longer needs to generate any fragment shader state because the GLSL pipeline backend will always give the wrapper a custom fragment shader. This simplifies a lot of the state comparison done by the wrapper. The fog generation is also removed even though it's actually part of the vertex shader because only the fixed function pipeline backend actually calls the fog functions so it would be disabled when using any of the other backends anyway. We can fix this when the two shader backends also start generating vertex shaders. cogl/Makefile.am | 5 +- cogl/cogl-pipeline-opengl.c | 8 + cogl/driver/gles/cogl-fixed-fragment-shader.glsl | 64 -- cogl/driver/gles/cogl-gles2-wrapper.c | 737 +--------------------- cogl/driver/gles/cogl-gles2-wrapper.h | 69 +-- 5 files changed, 22 insertions(+), 861 deletions(-) commit 9089d95b3fa78a712cc56fee76e37bfd9f16c04f Author: Neil Roberts Date: Tue Nov 23 14:51:49 2010 +0000 Disable the fixed function backend for GLES2 GLES2 doesn't really support fixed function so if we disable it we can remove the fixed function wrappers from the GLES2 Cogl backend. cogl/cogl-pipeline-fixed.c | 11 ----------- cogl/cogl-pipeline-private.h | 4 +--- cogl/cogl-pipeline.c | 2 ++ 3 files changed, 3 insertions(+), 14 deletions(-) commit a86a1df3725522dfd5133181c7063f9712cbefbe Author: Neil Roberts Date: Mon Nov 22 18:33:49 2010 +0000 cogl-pipeline-glsl: Generate the alpha test snippet under GLES2 GLES2 has no glAlphaFunc function so we need to simulate the behaviour in the fragment shader. The alpha test function is simulated with an if-statement and a discard statement. The reference value is stored as a uniform. cogl/cogl-pipeline-glsl.c | 144 +++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 140 insertions(+), 4 deletions(-) commit 0a314a752d640afeaa373cf19892a4eeae0c1d25 Author: Neil Roberts Date: Mon Nov 22 18:32:43 2010 +0000 cogl-pipeline: Add getters for the alpha test state This adds two public functions: cogl_pipeline_get_alpha_test_function and cogl_pipeline_get_alpha_test_reference. cogl/cogl-pipeline.c | 25 +++++++++++++++++++++++++ cogl/cogl-pipeline.h | 22 ++++++++++++++++++++++ 2 files changed, 47 insertions(+), 0 deletions(-) commit 60000690e1b24174d6ced3addce16d87be9bec40 Author: Neil Roberts Date: Mon Nov 22 18:29:50 2010 +0000 cogl: Separate out state flags for the alpha test func and ref Previously the flag to mark the differences for the alpha test function and reference value were conflated into one. However this is awkward when generating shader code to simulate the alpha testing for GLES 2 because in that case changing the function would need a different program but changing the reference value just requires updating a uniform. This patch makes the function and reference have their own state flags. cogl/cogl-pipeline-opengl.c | 3 +- cogl/cogl-pipeline-private.h | 25 +++++---- cogl/cogl-pipeline.c | 110 ++++++++++++++++++++++++++++++++--------- 3 files changed, 102 insertions(+), 36 deletions(-) commit 38ad560b19c67c05e9815d4662cc4bfe2a23ddbe Author: Neil Roberts Date: Mon Nov 22 16:44:11 2010 +0000 Remove the disabling of layer constants for GLES2 The GLSL shader generation supports layer combine constants so there's no need to disable it for GLES2. It looks like there was also code for it in the GLES2 wrapper so I'm not sure why it was disabled in the first place. cogl/cogl-blend-string.c | 10 ---------- 1 files changed, 0 insertions(+), 10 deletions(-) commit 7da3610e82bda0340b017551a1a8c54097a47186 Author: Neil Roberts Date: Fri Nov 19 10:44:27 2010 +0000 Generate GLSL in the CoglPipeline GLSL backend The GLSL pipeline backend can now generate code to represent the pipeline state in a similar way to the ARBfp backend. Most of the code for this is taken from the GLES 2 wrapper. cogl/cogl-context.c | 1 + cogl/cogl-context.h | 1 + cogl/cogl-pipeline-glsl.c | 772 ++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 702 insertions(+), 72 deletions(-) commit 46e59dc50fdab6cc9d272e29ab28563fd7cfa1db Author: Neil Roberts Date: Mon Nov 22 12:15:35 2010 +0000 Move the cogl shader boilerplate setting code to a separate function _cogl_shader_compile_real had some code to create a set of strings to combine the boilerplate code with a shader before calling glShaderSource. This has now been moved to its own internal function so that it could be used from the GLSL pipeline backend as well. cogl/cogl-shader-private.h | 8 ++++ cogl/cogl-shader.c | 96 ++++++++++++++++++++++++++++++++++---------- 2 files changed, 82 insertions(+), 22 deletions(-) commit 0b280188735dfcc1360fe6f16e647fc641ccdcc4 Author: Neil Roberts Date: Fri Nov 19 15:42:26 2010 +0000 Move need_texture_combine_separate to cogl-pipeline need_texture_combine_separate is moved to cogl-pipeline.c and renamed to _cogl_pipeline_need_texture_combine_separate. The function is needed by both the ARBfp and GLSL codegen backends so it makes sense to share it. cogl/cogl-pipeline-arbfp.c | 75 +----------------------------------------- cogl/cogl-pipeline-private.h | 4 ++ cogl/cogl-pipeline.c | 74 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 74 deletions(-) commit fac7338fdd2a9008f6f3fd1ab18273f95172b499 Author: Neil Roberts Date: Fri Nov 19 10:43:52 2010 +0000 Move find_arbfp_authority to cogl-pipeline.c The code for finding the arbfp authority for a pipeline should be the same as finding the GLSL authority. So that the code can be shared the function has been moved to cogl-pipeline.c and renamed to _cogl_pipeline_find_codegen_authority. cogl/cogl-pipeline-arbfp.c | 145 +----------------------------------------- cogl/cogl-pipeline-private.h | 4 + cogl/cogl-pipeline.c | 142 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 147 insertions(+), 144 deletions(-) commit 7379a5fc04605661d895f2fac85cf7311b2bedbd Author: Neil Roberts Date: Mon Nov 1 17:25:26 2010 +0000 cogl: Rename arbfp_source_buffer to fragment_source_buffer Only one of the material backends can be generating code at the same time so it seems to make sense to share the same source buffer between arbfp and glsl. The new name is fragment_source_buffer in case we later want to create a new buffer for the vertex shader. That probably couldn't share the same buffer because it will likely need to be generated at the same time. cogl/cogl-context.c | 2 +- cogl/cogl-context.h | 2 +- cogl/cogl-pipeline-arbfp.c | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) commit 3be05abf6046c54b549bb4059ae0ea9d68fb2688 Author: Evan Nemerson Date: Fri Nov 19 23:27:46 2010 -0800 cogl: Include exported pacakges information in GIR http://bugzilla.clutter-project.org/show_bug.cgi?id=2438 cogl/Makefile.am | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit cda29a80112bfc070df9916366cc9cd541db550c Author: Owen W. Taylor Date: Fri Nov 12 11:02:13 2010 -0500 Use FBOs and use cogl_read_pixels() to efficiently read partial textures * cogl_texture_get_data() is converted to use _cogl_texture_foreach_sub_texture_in_region() to iterate through the underlying textures. * When we need to read only a portion of the underlying texture, we set up a FBO and use _cogl_read_pixels() to read the portion we need. This is enormously more efficient for reading a small portion of a large atlas texture. * The CoglAtlasTexture, CoglSubTexture, and CoglTexture2dSliced implementation of get_texture() are removed. http://bugzilla.clutter-project.org/show_bug.cgi?id=2414 cogl/cogl-atlas-texture.c | 17 +---- cogl/cogl-sub-texture.c | 70 +--------------- cogl/cogl-texture-2d-sliced.c | 149 +------------------------------- cogl/cogl-texture.c | 191 +++++++++++++++++++++++++++++++++++++++-- 4 files changed, 186 insertions(+), 241 deletions(-) commit 47ccbf472e3e76946c4f7add9114d8a6141de54f Author: Neil Roberts Date: Wed Nov 17 17:57:17 2010 +0000 cogl-framebuffer: Try to track format of the framebuffer Previously in cogl_read_pixels we assume the format of the framebuffer is always premultiplied because that is the most likely format with the default Cogl blend mode. However when the framebuffer is bound to a texture we should be able to make a better guess at the format because we know the texture keeps track of the premult status. This patch adds an internal format member to CoglFramebuffer. For onscreen framebuffers we still assume it is RGBA_8888_PRE but for offscreen to textures we copy the texture format. cogl_read_pixels uses this to determine whether the data returned by glReadPixels will be premultiplied. http://bugzilla.clutter-project.org/show_bug.cgi?id=2414 cogl/cogl-framebuffer-private.h | 3 +++ cogl/cogl-framebuffer.c | 15 +++++++++++++++ cogl/cogl.c | 22 ++++++++++------------ 3 files changed, 28 insertions(+), 12 deletions(-) commit 8fd47276b7958f1f494e98da1dcce2b5802d1e05 Author: Neil Roberts Date: Wed Nov 17 17:45:27 2010 +0000 cogl_read_pixels: Fix the format used in GLES2 When converting the data in cogl_read_pixels it was using bmp_format instead of the format passed in to the function. bmp_format is the same as the passed in format except that it always has the premult bit set. Therefore the conversion would not handle premultiply correctly. http://bugzilla.clutter-project.org/show_bug.cgi?id=2414 cogl/cogl.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit e41e5efac087baf14e2dcd500840ccb27a9a037f Author: Neil Roberts Date: Wed Nov 17 15:38:20 2010 +0000 Add an internal _cogl_read_pixels_with_rowstride This is the same as _cogl_read_pixels except that it takes a rowstride parameter for the destination buffer. Under OpenGL setting the rowstride this will end up calling GL_ROW_LENGTH so that the buffer region can be directly written to. Under GLES GL_ROW_LENGTH is not supported so it will use an intermediate buffer as it does if the format is not GL_RGBA. cogl_read_pixels now just calls the full version of the function with the rowstride set to width*bpp. http://bugzilla.clutter-project.org/show_bug.cgi?id=2414 cogl/cogl-private.h | 10 ++++++++++ cogl/cogl.c | 39 ++++++++++++++++++++++++++++----------- 2 files changed, 38 insertions(+), 11 deletions(-) commit 05d8cc1223cfaf3623a4ab34615881f1fbfbe254 Author: Neil Roberts Date: Thu Nov 11 15:28:44 2010 +0000 Add an internal _cogl_offscreen_new_to_texture_full function This function is the same as cogl_offscreen_new_to_texture but it takes a level parameter and a set of flags so that FBOs can be used to render to higher mipmap levels and to disable the depth and stencil buffers. cogl_offscreen_new_to_texture now just calls the new function with the level set to zero. This function could be useful in a few places in Cogl where we want to use FBOs as an implementation detail such as when copying between textures. http://bugzilla.clutter-project.org/show_bug.cgi?id=2414 cogl/cogl-framebuffer-private.h | 24 +++++++++ cogl/cogl-framebuffer.c | 100 +++++++++++++++++++++++++++++--------- 2 files changed, 100 insertions(+), 24 deletions(-) commit 38929d55c9558c0f2021347106add7c5c072e995 Author: Neil Roberts Date: Tue Nov 23 14:07:16 2010 +0000 cogl-texture-driver-gles: Fix image height for uploading 3D textures When uploading a 3D texture with an awkward rowstride, on GLES Cogl will copy the images to an intermediate buffer to pass to GL. However it was using the wrong height when copying the data so it would end up overflowing the buffer and crashing. cogl/driver/gles/cogl-texture-driver-gles.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 8e8f5d5748c634a54d5410b4419f88c1abf20d64 Author: Emmanuele Bassi Date: Tue Nov 23 13:05:47 2010 +0000 pipeline: Use WrapModeInternal in the Layer struct Since we're using CoglPipelineWrapModeInternal in the internal API anyway, and the compiler complains loudly when comparing two enumeration types without casting, the PipelineLayer struct should store the wrap modes using the internal enumeration. cogl/cogl-pipeline-private.h | 44 +++++++++++++++++++++--------------------- 1 files changed, 22 insertions(+), 22 deletions(-) commit 0ec9e406ea5157d3ffbe7a7ae1ed228a351fda06 Author: Robert Bragg Date: Mon Nov 22 15:51:15 2010 +0000 clip-stack: combine modelview-projection in set_clip_planes When using clip planes and we we have to project some vertices into screen coordinates we used to transform those by the modelview and then the projection matrix separately. Now we combine the modelview and projection matrix and then use that to transform the vertices in one step instead. cogl/cogl-clip-stack.c | 24 ++++++++++++------------ 1 files changed, 12 insertions(+), 12 deletions(-) commit 649aaffbe975f9404fa4627b75b034a2d713a988 Author: Robert Bragg Date: Mon Nov 22 12:44:36 2010 +0000 journal: remove possability of fallback layers When logging quads in the journal it used to be possible to specify a mask of fallback layers (layers where a default white texture should be used in-place of the corresponding texture in the current source pipeline). Since we now handle fallbacks for cogl_rectangle* primitives when validating the pipeline up-front before logging in the journal we no longer need the ability for the journal to apply fallbacks too. cogl/cogl-journal-private.h | 1 - cogl/cogl-journal.c | 6 ------ cogl/cogl-primitives.c | 2 -- 3 files changed, 0 insertions(+), 9 deletions(-) commit e9e824fd86961d94ecdf34a09cfbe74f3d1c5966 Author: Robert Bragg Date: Fri Nov 12 13:35:24 2010 +0000 matrix: Adds experimental cogl_matrix_{transform,project}_points This add two new function that allows us to transform or project an array of points instead of only transforming one point at a time. Recent benchmarking has shown cogl_matrix_transform_point to be a bottleneck sometimes, so this should allow us to reduce the overhead when transforming lots of vertices at the same time, and also reduce the cost of 3 component, non-projective transforms. For now they are marked as experimental (you have to define COGL_ENABLE_EXPERIMENTAL_API) because there is some concern that it introduces some inconsistent naming. cogl_matrix_transform_point would have to be renamed cogl_matrix_project_point to be consistent, but that would be an API break. cogl/cogl-matrix.c | 346 ++++++++++++++++++++++++++++++++++ cogl/cogl-matrix.h | 123 ++++++++++++ doc/reference/cogl/cogl-sections.txt | 2 +- 3 files changed, 470 insertions(+), 1 deletions(-) commit 56f36cf9c2cb06317462992229159b632e94b6d5 Author: Robert Bragg Date: Thu Nov 11 16:28:45 2010 +0000 primitives: validate with _cogl_pipeline_foreach_layer Switch _cogl_rectangles_with_multitexture_coords to using _cogl_pipeline_foreach_layer to iterate the layers of a pipeline when validating instead of iterating the pipelines internal list, which is risky since any modifications to pipelines (even to an override pipeline derived from the original), could potentially corrupt the list as it is being iterated. cogl/cogl-pipeline-private.h | 3 +- cogl/cogl-pipeline.c | 6 +- cogl/cogl-primitives.c | 324 ++++++++++++++++++++++------------------- 3 files changed, 180 insertions(+), 153 deletions(-) commit 1a3f946cc66b37f6043488a9b7b68df58b994d63 Author: Robert Bragg Date: Thu Nov 11 15:08:38 2010 +0000 cogl: remove WrapModeOverrides from FlushOptions This removes the possibility to specify wrap mode overrides within a CoglPipelineFlushOptions struct since the right way to handle these overrides is by copying the user's material and making the changes to that copy before flushing. All primitives code has already switched away from using these wrap mode overrides so this patch just removes unused code and types. It also remove the wrap_mode_overrides argument for _cogl_journal_log_quad. cogl/cogl-journal-private.h | 2 - cogl/cogl-journal.c | 7 ----- cogl/cogl-pipeline-private.h | 32 +----------------------- cogl/cogl-pipeline.c | 55 ------------------------------------------ cogl/cogl-primitives.c | 2 - 5 files changed, 1 insertions(+), 97 deletions(-) commit ebdf1127320ab11a0ac7c1e6f2236fb633b61112 Author: Emmanuele Bassi Date: Sat Nov 20 10:46:57 2010 +0000 build: Add missing cogl-shader-boilerplate.h cogl/Makefile.am | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 13561e2e2da4bf049963361cc457a11db5d95abf Author: Emmanuele Bassi Date: Fri Nov 19 18:29:43 2010 +0000 build: Add a missing file cogl/Makefile.am | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 05f5ae1a9700edefe964095ce08ef9bcfbcb3865 Author: Emmanuele Bassi Date: Fri Nov 19 18:15:29 2010 +0000 build: Don't reference non-existing files cogl/Makefile.am | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit 4e56eec36620907a8ccba7ae41965ccacd7252bb Author: Owen W. Taylor Date: Mon Nov 15 01:32:42 2010 -0500 Free state at the end of a journal flush At the end of flushing the journal, we need to free the vertex attributes and vertex array. http://bugzilla.clutter-project.org/show_bug.cgi?id=2423 cogl/cogl-journal.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) commit fae591b168b72b1a1f8ca9f0452bd0318ced36d5 Author: Owen W. Taylor Date: Sun Nov 14 22:59:24 2010 -0500 Actually free buffer objects With the refactoring to centralize code into CoglBuffer, _cogl_buffer_fini() was never actually implemented, so all GL vertex and index buffer objects were leaked. The duplicate call to glDeleteBuffers() in CoglPixelArray is removed (it wasn't paying attention to whether the buffer had been allocated as a PBO or not.) http://bugzilla.clutter-project.org/show_bug.cgi?id=2423 cogl/cogl-buffer.c | 7 +++++++ cogl/cogl-pixel-array.c | 2 -- 2 files changed, 7 insertions(+), 2 deletions(-) commit 460e4b90d3ef10c04a32bdb1bd4556f9464d8d1e Author: Robert Bragg Date: Tue Nov 16 13:06:08 2010 +0000 debug: Adds a COGL_DEBUG=wireframe option This adds a COGL_DEBUG=wireframe option to visualize the underlying geometry of the primitives being drawn via Cogl. This works for triangle list, triangle fan, triangle strip and quad (internal only) primitives. It also works for indexed vertex arrays. cogl/cogl-debug-options.h | 5 + cogl/cogl-debug.c | 3 +- cogl/cogl-debug.h | 3 +- cogl/cogl-vertex-attribute.c | 243 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 252 insertions(+), 2 deletions(-) commit 20a1f876286e3f5cff7bae7dabd9c37629d61336 Author: Robert Bragg Date: Tue Nov 16 08:52:49 2010 +0000 vertex-buffer: don't unref NULL object In cogl_vertex_buffer_indices_get_for_quads() we sometimes have to extend the length of an existing array, but when we came to unref the previous array we didn't first check that it wasn't simply NULL. cogl/cogl-vertex-buffer.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 982f1b4bd064dea10ed510d4d09ee17fd2800b9d Author: Robert Bragg Date: Tue Nov 16 08:49:55 2010 +0000 vertex-array: Adds data arg for _vertex_array_new() This adds an optional data argument for cogl_vertex_array_new() since it seems that mostly every case where we use this API we follow up with a cogl_buffer_set_data() matching the size of the new array. This simplifies all those cases and whenever we want to delay uploading of data then NULL can simply be passed. cogl/cogl-journal.c | 2 +- cogl/cogl-primitive.c | 40 ++++++++-------------------------------- cogl/cogl-primitives.c | 6 ++---- cogl/cogl-vertex-array.c | 11 +++++++++-- cogl/cogl-vertex-array.h | 9 +++++++-- cogl/cogl-vertex-buffer.c | 3 ++- cogl/cogl2-path.c | 12 ++++-------- 7 files changed, 33 insertions(+), 50 deletions(-) commit 60daaff724a99b3e6686ef43fba54ecd429e8f31 Author: Robert Bragg Date: Tue Nov 16 08:41:29 2010 +0000 indices: Makes cogl_indices_get_array public This makes the previously internal only _cogl_indices_get_array API public as cogl_indices_get_array (Though marked as experimental) cogl/cogl-indices-private.h | 3 --- cogl/cogl-indices.c | 2 +- cogl/cogl-indices.h | 3 +++ cogl/cogl-vertex-attribute.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) commit fbc01d659c81c86bb13e376ed0749d61a4418c21 Author: Robert Bragg Date: Tue Nov 16 08:38:59 2010 +0000 build: cogl-clip-state.h depends on cogl-clip-stack.h This adds a #include "cogl-clip-stack.h" to cogl-clip-state.h which depends on the CoglClipStack typedef. cogl/cogl-clip-state.h | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 26f68b6f0eb0def3ccee999a64b77471a5d2a5a0 Merge: dedceb2 8c3bfaf Author: Emmanuele Bassi Date: Mon Nov 15 15:41:46 2010 +0000 Merge remote branch 'elliot/cookbook-opacity-values-fix' * elliot/cookbook-opacity-values-fix: cookbook: Fix opacity examples in recipe cookbook: Fix incorrect value for opacity commit dedceb2647a2156cf079eb202d99d7eb55b4c2bc Merge: 7e9a209 8c3bfaf Author: Emmanuele Bassi Date: Mon Nov 15 15:37:42 2010 +0000 Merge remote branch 'elliot/cookbook-animations-looping' * elliot/cookbook-animations-looping: cookbook: Recipe for "looping animations" cookbook: Clarify how signals are emitted during looped animation cookbook: First draft for looping animations recipe cookbook: Recipe skeleton for "looping animations" cookbook: Looping animation examples commit 7e9a20960cf52b8e6d5f9c08f432d8cc11e435fc Author: Emmanuele Bassi Date: Mon Nov 15 15:26:07 2010 +0000 Merge remote branch 'elliot/c90-fix' commit 8c3bfaf8d9447f077c82884fe142ff3c4fc7346b Merge: 081eb2d 353ea52 Author: Emmanuele Bassi Date: Thu Nov 11 17:53:42 2010 +0000 Merge branch 'wip/static-colors' * wip/static-colors: Move tests to static colors where possible color: Add named, global colors commit 081eb2d75d83322f89ccf32049dffdeb4ce2abb1 Author: Neil Roberts Date: Thu Nov 11 16:24:54 2010 +0000 cogl-texture: Remove the gl_handle from CoglTextureSliceCallback There's no longer any need to use the GL handle in the callback for _cogl_texture_foreach_sub_texture_in_region because it can now work in terms of primitive cogl textures so it has now been removed. This would be helpful if we ever want to make the foreach function public so that apps could implement their own primitives using sliced textures. cogl/cogl-primitives.c | 2 -- cogl/cogl-sub-texture.c | 4 +--- cogl/cogl-texture-2d-sliced.c | 4 ---- cogl/cogl-texture-2d.c | 2 -- cogl/cogl-texture-3d.c | 2 -- cogl/cogl-texture-private.h | 2 -- cogl/cogl-texture-rectangle.c | 2 -- 7 files changed, 1 insertions(+), 17 deletions(-) commit 22c61c53157840011936b1f5cee3756b19504f45 Author: Neil Roberts Date: Thu Nov 11 16:18:25 2010 +0000 cogl-pipeline: Use layer overrides as CoglHandles instead of GLuint Since d5634e37 the sliced texture backend now works in terms of CoglTexture2Ds so there's no need to have special casing for overriding the texture of a pipeline layer with a GL handle. Instead we can just use cogl_pipeline_set_layer_texture with the CoglHandle. The special _cogl_pipeline_set_layer_gl_texture_slice function has now been removed and parts of the code for comparing materials have been simplified. cogl/cogl-journal-private.h | 2 +- cogl/cogl-journal.c | 2 +- cogl/cogl-pipeline-opengl.c | 35 ++++---------- cogl/cogl-pipeline-private.h | 7 +-- cogl/cogl-pipeline.c | 105 +++++------------------------------------- cogl/cogl-primitives.c | 15 +++++- 6 files changed, 38 insertions(+), 128 deletions(-) commit 9302d146d16c843603fe06cac142f21f7569893b Author: Neil Roberts Date: Thu Nov 11 15:42:12 2010 +0000 CoglTexture2DSliced: Pass slice tex to callback in foreach_sub_texture The cogl_texture_foreach_sub_texture_in_region virtual for the sliced texture backend was previously passing the CoglHandle of the sliced texture to the callback. Since d5634e37 the slice texture backend now works in terms of 2D textures so it's possible to pass the underlying slice texture as a handle too. This makes all of the foreach callbacks consistent in that they pass a CoglHandle of the primitive texture type that matches the GL handle. cogl/cogl-texture-2d-sliced.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit cce8645aba8d076e250e4efe93e8689585aa12f5 Author: Robert Bragg Date: Thu Nov 4 00:27:47 2010 +0000 path 2.0: update path API for experimental 2.0 API When COGL_ENABLE_EXPERIMENTAL_2_0_API is defined cogl.h will now include cogl2-path.h which changes cogl_path_new() so it can directly return a CoglPath pointer; it no longer exposes a prototype for cogl_{get,set}_path and all the remaining cogl_path_ functions now take an explicit path as their first argument. The idea is that we want to encourage developers to retain path objects for as long as possible so they can take advantage of us uploading the path geometry to the GPU. Currently although it is possible to start a new path and query the current path, it is not convenient. The other thing is that we want to get Cogl to the point where nothing depends on a global, current context variable. This will allow us to one day define a sensible threading model if/when that is ever desired. cogl/Makefile.am | 15 +- cogl/cogl-clip-state.c | 8 +- cogl/cogl-context.c | 4 +- cogl/cogl-context.h | 2 +- cogl/cogl-path-private.h | 14 +- cogl/cogl-path.c | 1363 ++---------------------------------- cogl/cogl-path.h | 2 + cogl/cogl.h | 6 + cogl/cogl2-path.c | 1466 +++++++++++++++++++++++++++++++++++++++ cogl/cogl2-path.h | 506 ++++++++++++++ pango/cogl-pango-display-list.c | 7 +- 11 files changed, 2085 insertions(+), 1308 deletions(-) commit 1b75ad9c80e250a56e3c049bfd3bd166641a5cbb Author: Robert Bragg Date: Wed Nov 3 20:26:20 2010 +0000 cogl: Adds COGL_ENABLE_EXPERIMENTAL_2_0_API define For now this new define is simply an alias for COGL_ENABLE_EXPERIMENTAL_API but the intention is that we will also use it to start experimenting with changes that need to break the existing Cogl API in incompatible ways. cogl/cogl.h | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 353ea5299b40df57e1b20dccba68a065fa1a47d3 Author: Robert Bragg Date: Fri Jul 23 17:46:41 2010 +0100 cogl-shader: Prepend boilerplate for portable shaders We now prepend a set of defines to any given GLSL shader so that we can define builtin uniforms/attributes within the "cogl" namespace that we can use to provide compatibility across a range of the earlier versions of GLSL. This updates test-cogl-shader-glsl.c and test-shader.c so they no longer needs to special case GLES vs GL when splicing together its shaders as well as the blur, colorize and desaturate effects. To get a feel for the new, portable uniform/attribute names here are the defines for OpenGL vertex shaders: #define cogl_position_in gl_Vertex #define cogl_color_in gl_Color #define cogl_tex_coord_in gl_MultiTexCoord0 #define cogl_tex_coord0_in gl_MultiTexCoord0 #define cogl_tex_coord1_in gl_MultiTexCoord1 #define cogl_tex_coord2_in gl_MultiTexCoord2 #define cogl_tex_coord3_in gl_MultiTexCoord3 #define cogl_tex_coord4_in gl_MultiTexCoord4 #define cogl_tex_coord5_in gl_MultiTexCoord5 #define cogl_tex_coord6_in gl_MultiTexCoord6 #define cogl_tex_coord7_in gl_MultiTexCoord7 #define cogl_normal_in gl_Normal #define cogl_position_out gl_Position #define cogl_point_size_out gl_PointSize #define cogl_color_out gl_FrontColor #define cogl_tex_coord_out gl_TexCoord #define cogl_modelview_matrix gl_ModelViewMatrix #define cogl_modelview_projection_matrix gl_ModelViewProjectionMatrix #define cogl_projection_matrix gl_ProjectionMatrix #define cogl_texture_matrix gl_TextureMatrix And for fragment shaders we have: #define cogl_color_in gl_Color #define cogl_tex_coord_in gl_TexCoord #define cogl_color_out gl_FragColor #define cogl_depth_out gl_FragDepth #define cogl_front_facing gl_FrontFacing cogl/cogl-context.c | 2 +- cogl/cogl-path.c | 4 +- cogl/cogl-pipeline-arbfp.c | 3 +- cogl/cogl-pipeline-fixed.c | 3 +- cogl/cogl-pipeline-glsl.c | 44 +++++- cogl/cogl-pipeline-opengl-private.h | 3 +- cogl/cogl-pipeline-opengl.c | 6 +- cogl/cogl-pipeline-private.h | 3 +- cogl/cogl-shader-boilerplate.h | 107 +++++++++++ cogl/cogl-shader-private.h | 5 + cogl/cogl-shader.c | 206 +++++++++++++++++----- cogl/cogl-vertex-attribute.c | 4 +- cogl/cogl-vertex-buffer.c | 86 +++++++++- cogl/cogl.c | 16 ++- cogl/driver/gles/cogl-fixed-fragment-shader.glsl | 24 ++-- cogl/driver/gles/cogl-fixed-vertex-shader.glsl | 40 +++-- cogl/driver/gles/cogl-gles2-wrapper.c | 62 ++++--- 17 files changed, 494 insertions(+), 124 deletions(-) commit 7a4c7b41c213de3eca8895084d59a16b567722c9 Author: Emmanuele Bassi Date: Mon Nov 8 16:01:19 2010 +0000 gtk-doc: Fixes for the API references cogl/cogl-vertex-attribute.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit d2ddd9c945a9c6456c4fe2704c8fee7b08a32185 Author: Emmanuele Bassi Date: Sat Nov 6 18:12:41 2010 +0000 Remove a compiler warning cogl/cogl-vertex-attribute.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit ff8130101aa4696b9c0403bc5067b6ef48de4cc8 Author: Maxim Ermilov Date: Fri Nov 5 20:20:14 2010 +0300 CoglContext: correct initialization order http://bugzilla.clutter-project.org/show_bug.cgi?id=2401 cogl/cogl-context.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 3bd20acfb4209f595f847394bd48365aec6d9b5e Author: Neil Roberts Date: Fri Nov 5 14:38:19 2010 +0000 cogl-texture-2d-sliced: Fix the foreach callback for waste textures When converting the virtual coordinates of the underlying texture for a slice to virtual coordinates for the whole texture it was using the size and offset of the intersection as the size of the child texture. This would be incorrect if the texture contains waste or the texture coordinates are not the default. Instead the sliced foreach function now passes the CoglSpan to the callback instead of the intersection. http://bugzilla.clutter-project.org/show_bug.cgi?id=2398 cogl/cogl-texture-2d-sliced.c | 56 +++++++++++++++++++---------------------- 1 files changed, 26 insertions(+), 30 deletions(-) commit 3203c2382f53275314f9f706f652817cc515c25d Author: Neil Roberts Date: Fri Nov 5 14:55:46 2010 +0000 Replace the disable-npots tool with a COGL_DEBUG option Previously in the tests/tools directory we build a disable-npots library which was used as an LD_PRELOAD to trick Cogl in to thinking there is no NPOT texture extension. This is a little awkward to use so it seems much simpler to just define a COGL_DEBUG option to disable npot textures. cogl/cogl-debug-options.h | 6 ++++++ cogl/cogl-debug.c | 3 ++- cogl/cogl-debug.h | 3 ++- cogl/cogl.c | 6 ++++++ 4 files changed, 16 insertions(+), 2 deletions(-) commit 117ef6baff7c644534d2c1ab81ef77b937ab4ec7 Author: Robert Bragg Date: Mon Nov 1 22:07:11 2010 +0000 matrix-stack: use GArray instead of GSList for stack In some micro-benchmarks testing journal throughput the list manipulation jumps pretty high in the profile. This replaces the GSList usage with a GArray instead which is effectively a grow only allocation that means we avoid ongoing allocations while manipulating the stack mid-scene. cogl/cogl-matrix-stack.c | 55 ++++++++++++++------------------------------- 1 files changed, 17 insertions(+), 38 deletions(-) commit b41bf9e67fd09a71600f333947c4b50ae6eeed1e Author: Robert Bragg Date: Mon Nov 1 20:33:20 2010 +0000 pipeline: Avoid costly checking of lighting properties During _cogl_pipeline_needs_blending_enabled we were always checking the current lighting properties (ambient,diffuse,specular,emission) which had a notable impact during micro-benchmarks that exercise journal throughput of simple colored rectangles. This #if 0's the offending code considering that Cogl doesn't actually support lighting currently and when it actually does then we will be able to optimize this by avoiding the checks when lighting is disabled. cogl/cogl-pipeline.c | 42 ++++++++++++++++++++++++------------------ 1 files changed, 24 insertions(+), 18 deletions(-) commit e5eff5fc89fb0a789b1130135d3c699b4c78c370 Author: Robert Bragg Date: Mon Nov 1 20:27:32 2010 +0000 cogl: add separate material for blended source_colors When using cogl_set_source_color4ub there is a notable difference between colors that require blending and those that dont. When trying to modify the color of pipeline referenced by the journal we don't force a flush of the journal unless the color change will also change the blending state. By using two separate pipeline objects for handing opaque or transparent colors we can avoid ever flushing the journal when repeatedly using cogl_set_source_color and jumping between opaque and transparent colors. cogl/cogl-context.c | 13 ++++++++----- cogl/cogl-context.h | 5 +++-- cogl/cogl.c | 19 ++++++++++++++----- 3 files changed, 25 insertions(+), 12 deletions(-) commit 4bd64b6ba69ed71ef0855cffe09ae1922708e5c1 Author: Robert Bragg Date: Mon Nov 1 18:55:48 2010 +0000 texture_quad_multiple_primitives: rework wrap mode overrides This reworks _cogl_texture_quad_multiple_primitives so instead of using the CoglPipelineWrapModeOverrides mechanism to force the clamp to edge repeat mode we now derive an override pipeline using cogl_pipeline_copy instead. This avoids a relatively large, unconditional, memset. cogl/cogl-primitives.c | 84 +++++++++++++++++++++++++++++++---------------- 1 files changed, 55 insertions(+), 29 deletions(-) commit 636310a81ebb29be934ceea3933ebae1c6a7c52d Author: Robert Bragg Date: Mon Nov 1 18:33:17 2010 +0000 _multitexture_quad_single_primitive: avoid wrap overrides This avoids using the wrap mode overrides mechanism to implement _cogl_multitexture_quad_single_primitive which requires memsetting a fairly large array. This updates it to use cogl_pipeline_foreach_layer() and we now derive an override_material to handle changes to the wrap modes instead of using the CoglPipelineWrapModeOverrides. cogl/cogl-primitives.c | 265 +++++++++++++++++++++++++++--------------------- 1 files changed, 151 insertions(+), 114 deletions(-) commit a25aad954e4a7bef577fea0cd9b88439b536f096 Author: Neil Roberts Date: Wed Nov 3 16:02:27 2010 +0000 cogl-path: Don't bother filling the path if less than 3 nodes Previously there was a check to avoid filling the path if there are zero nodes. However the tesselator also won't generate any triangles if there are less than 3 nodes so we might as well bail out in that case too. If we don't emit any triangles then we would end up trying to create an empty VBO. Although I don't think this should necessarily be a problem, this seems to cause Mesa to segfault in version 7.8.1 when calling glBufferSubData (although not in master). test-cogl-primitives tries to fill a path with only two points so it's convenient to be able to avoid the crash in this case. cogl/cogl-path.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 3c8c1951151f16bedc7e298e2f0a8af536643617 Author: Neil Roberts Date: Tue Nov 2 17:35:17 2010 +0000 cogl-journal: Log the clip state in the journal When adding a new entry to the journal a reference is now taken on the current clip stack. Modifying the current clip state no longer causes a journal flush. The journal flushing code now has an extra stage to compare the clip state of each entry. The comparison can simply be done by comparing the pointers. Although different clip states will still end up with multiple draw calls this at leasts allows a scene comprising of multiple different clips to be upload with one vbo. It also lays the groundwork to do certain tricks when drawing clipped rectangles such as modifying the geometry instead of setting a clip state. cogl/cogl-clip-state.c | 24 ---------- cogl/cogl-journal-private.h | 2 + cogl/cogl-journal.c | 106 +++++++++++++++++++++++++++++++++---------- 3 files changed, 83 insertions(+), 49 deletions(-) commit 6cf01ff0f49f085e7fc90e0263246ec070bb0e0c Author: Neil Roberts Date: Tue Nov 2 17:34:51 2010 +0000 cogl-framebuffer: Add a flag to skip flushing the clip state This adds a flag to avoid flushing the clip state when flushing the framebuffer state. This will be used by the journal to manage its own clip state flushing. cogl/cogl-framebuffer-private.h | 3 +++ cogl/cogl-framebuffer.c | 3 ++- 2 files changed, 5 insertions(+), 1 deletions(-) commit caa991d7a1b9b3ee34a04b54db6adcf99ed0d72d Author: Neil Roberts Date: Tue Nov 2 17:15:06 2010 +0000 cogl: Don't flush the journal when flushing clip state Flushing the clip state no longer does anything that would cause the journal to flush. The clip state is only flushed when flushing the framebuffer state and in all cases this ends up flushing the journal in one way or another anyway. Avoiding flushing the journal will make it easier to log the clip state in the journal. Previously when trying to set up a rectangle clip that can't be scissored or when using a path clip the code would use cogl_rectangle as part of the process to fill the stencil buffer. This is now changed to use a new internal _cogl_rectangle_immediate function which directly uses the vertex array API to draw a triangle strip without affecting the journal. This should be just as efficient as the previous journalled code because these places would end up flushing the journal immediately before and after submitting the single rectangle anyway and flushing the journal always creates a new vbo so it would effectively do the same thing. Similarly there is also a new internal _cogl_clear function that does not flush the journal. cogl/Makefile.am | 2 + cogl/cogl-clip-stack.c | 47 +++++++++++-------------- cogl/cogl-clip-state.c | 5 +++ cogl/cogl-path.c | 76 ++++++++++++++++++++-------------------- cogl/cogl-primitives-private.h | 43 ++++++++++++++++++++++ cogl/cogl-primitives.c | 40 +++++++++++++++++++++ cogl/cogl-private.h | 34 ++++++++++++++++++ cogl/cogl.c | 30 ++++++++++----- 8 files changed, 203 insertions(+), 74 deletions(-) commit db86a5a4867b4a31a9f18a3486cdbd3ff1758502 Author: Neil Roberts Date: Wed Nov 3 15:48:56 2010 +0000 cogl-path: Use the vertex array API instead of CoglVertexBuffer The new vertex array is now implemented in terms of the CoglVertexBuffer anyway so it should be slightly faster to use a vertex array directly. cogl/cogl-path-private.h | 26 ++++++++------- cogl/cogl-path.c | 81 ++++++++++++++++++++++++++-------------------- 2 files changed, 60 insertions(+), 47 deletions(-) commit 0c8eb904c0657ee730c9569afad7467736d68dcc Author: Neil Roberts Date: Tue Nov 2 14:28:12 2010 +0000 cogl: Move the clip stack dirtiness to the context rather than the FB Previously we tracked whether the clip stack needs flushing as part of the CoglClipState which is part of the CoglFramebuffer state. This is a bit odd because most of the clipping state (such as the clip planes and the scissor) are part of the GL context's state rather than the framebuffer. We were marking the clip state on the framebuffer dirty every time we change the framebuffer anyway so it seems to make more sense to have the dirtiness be part of the global context. Instead of a just a single boolean to record whether the state needs flushing, the CoglContext now holds a reference to the clip stack that was flushed. That way we can flush arbitrary stack states and if it happens to be the same as the state already flushed then Cogl will do nothing. This will be useful if we log the clip stack in the journal because then we will need to flush unrelated clip stack states for each batch. cogl/cogl-clip-stack.c | 44 ++++++++++++++++++++++++++++++++++++++------ cogl/cogl-clip-stack.h | 6 ++++-- cogl/cogl-clip-state.c | 40 +++------------------------------------- cogl/cogl-clip-state.h | 6 ------ cogl/cogl-context.c | 5 +++++ cogl/cogl-context.h | 22 ++++++++++++++++++++++ cogl/cogl-framebuffer.c | 2 +- cogl/cogl-path.c | 10 +++------- 8 files changed, 76 insertions(+), 59 deletions(-) commit f15b47cc03b2f8f2388b785706d61e2f2c05707a Author: Neil Roberts Date: Mon Nov 1 19:52:45 2010 +0000 cogl-clip-stack: Don't allocate a separate struct for CoglClipStack Instead of having a separate CoglHandle for CoglClipStack the code is now expected to directly hold a pointer to the top entry on the stack. The empty stack is then the NULL pointer. This saves an allocation when we want to copy the stack because we can just take a reference on a stack entry. The idea is that this will make it possible to store the clip stack in the journal without any extra allocations. The _cogl_get_clip_stack and set functions now take a CoglClipStack pointer instead of a handle so it would no longer make sense to make them public. However I think the only reason we would have wanted that in the first place would be to save the clip state between switching FBOs and that is no longer necessary. cogl/cogl-clip-stack.c | 193 ++++++++++++++++++----------------------------- cogl/cogl-clip-stack.h | 38 ++++------ cogl/cogl-clip-state.c | 55 +++++--------- cogl/cogl-clip-state.h | 20 ++--- 4 files changed, 116 insertions(+), 190 deletions(-) commit af5ddb0b132c4088285f6ebbcb3e9b17cca0d6b7 Author: Neil Roberts Date: Wed Nov 3 13:34:21 2010 +0000 cogl: Don't flush the framebuffer state for the internal draw CoglVertexAttribute has an internal draw function that is used by the CoglJournal to avoid the call to cogl_journal_flush which would otherwise end up recursively flushing the journal forever. The enable_gl_state function called by this was previously also calling _cogl_flush_framebuffer_state. However the journal code tries to handle this function specially by calling it with a flag to disable flushing the modelview matrix. This is useful because the journal handles flushing the modelview itself. Without this patch the journal state ends up getting flushed twice. This isn't a particularly big problem currently because the matrix stack has caching to recognise when it would push the same state twice and bails out. However if we later want to use the framebuffer flush flags to override a particular state of the framebuffer (such as the clip state) then we need to make sure the flush isn't called twice. cogl/cogl-vertex-attribute.c | 29 +++++++++++++++++++---------- 1 files changed, 19 insertions(+), 10 deletions(-) commit 6027aa04a4bd1943ffd98db1f258e948198a0926 Author: Neil Roberts Date: Thu Nov 4 16:01:23 2010 +0000 cogl-buffer: Use void* instead of guint8* for map and set_data Unless the CoglBuffer is being used for texture data then it's relatively unlikely that the data will contain an array of bytes. For example if it's used as a vertex array then it's more likely to be floats or some vertex struct. In that case it's much more convenient if set_data and map use void* pointers so that we can avoid a cast. cogl/cogl-buffer-private.h | 8 ++++---- cogl/cogl-buffer.c | 12 ++++++------ cogl/cogl-buffer.h | 4 ++-- cogl/cogl-journal.c | 2 +- cogl/cogl-primitive.c | 16 ++++++++-------- cogl/cogl-primitives.c | 2 +- 6 files changed, 22 insertions(+), 22 deletions(-) commit 2155bd754653c1ccfad8b411f96c31b507f03deb Author: Neil Roberts Date: Thu Nov 4 17:21:56 2010 +0000 cogl-primitive: Fix the texture attribute offsets The offsets for the texture coordinate attributes in the convenience constructors were all wrong. cogl/cogl-primitive.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 7aa39f18a4e0fa7f089498676578fc2e90c137dc Author: Neil Roberts Date: Thu Nov 4 16:54:20 2010 +0000 cogl-primitive: Fix a typo in new_with_attributes_array A typo in the g_return_val_if_fail was causing it to segfault. cogl/cogl-primitive.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit ec080f2db09dca52cdac7a2a915f59c18ba47605 Author: Neil Roberts Date: Thu Nov 4 16:42:11 2010 +0000 cogl-primitive: Add the missing cogl_primitive_new_p2 function There was a struct defined for CoglP2Vertex but there was no constructor function to use it. cogl/cogl-primitive.c | 27 +++++++++++++++++++++++++++ cogl/cogl-primitive.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 0 deletions(-) commit 5dc1b2fb8fe79c67fda72951ccce8f42a9e707fb Author: Neil Roberts Date: Thu Nov 4 16:13:01 2010 +0000 cogl-primitive: Fix the ref-counting for the convenience constuctors The convenience constructors for the builtin vertex structs were creating the primitive and then immediately destroying it and returning the pointer. I think the intention was to unref the attributes instead. This adds an internal wrapper around the new_with_attributes_array constructor which unrefs the attributes instead of the primitive. The convenience constructors now use that. cogl/cogl-primitive.c | 89 ++++++++++++++++++++++++++++++------------------- 1 files changed, 55 insertions(+), 34 deletions(-) commit 18e302c5cd40e1fff9a742495b7e3ed135e80c38 Author: Robert Bragg Date: Thu Nov 4 13:23:23 2010 +0000 primitive: fix prototypes and start adding docs This fixes the prototypes for the cogl_primitive_new_xyz functions and also adds documentation with examples for each one. cogl/cogl-primitive.h | 329 +++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 307 insertions(+), 22 deletions(-) commit 2a7e7fb6d38a7679a19dcc44004e78898aa9cc01 Author: Neil Roberts Date: Thu Nov 4 14:56:44 2010 +0000 cogl-gles2-wrapper: Fix a reference to the old name for CoglPipeline The GLES2 wrapper was referring to COGL_MATERIAL_PROGRAM_TYPE_GLSL but this has since been renamed to COGL_PIPELINE_PROGRAM_TYPE_GLSL so the GLES2 backend wouldn't compile. cogl/driver/gles/cogl-gles2-wrapper.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 61bb91a2e76d105d7bbbede3b339f01ac72463a5 Author: Robert Bragg Date: Fri Oct 29 15:49:25 2010 +0100 gles2: disable vbos until while we rework backend The gles2 wrapper functions don't understand about the CoglBuffer API so they don't support attributes stored in a CoglVertexArray. Instead of teaching the backend about buffers we are going to wait until we have overhauled the GLES 2 backend. We are currently making progress consolidating the GLES 2 backend with a new GLSL backend for CoglMaterial. This will hugely simplify the GLES 2 support and share code with the OpenGL backend. In the end it's hoped that this problem will simply go away so it doesn't make much sense to solve it with the current design. cogl/driver/gles/cogl-gles.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit f80cb197a9113da847375c3f60334a1282a639bc Author: Robert Bragg Date: Wed Oct 27 18:54:57 2010 +0100 cogl: rename CoglMaterial -> CoglPipeline This applies an API naming change that's been deliberated over for a while now which is to rename CoglMaterial to CoglPipeline. For now the new pipeline API is marked as experimental and public headers continue to talk about materials not pipelines. The CoglMaterial API is now maintained in terms of the cogl_pipeline API internally. Currently this API is targeting Cogl 2.0 so we will have time to integrate it properly with other upcoming Cogl 2.0 work. The basic reasons for the rename are: - That the term "material" implies to many people that they are constrained to fragment processing; perhaps as some kind of high-level texture abstraction. - In Clutter they get exposed by ClutterTexture actors which may be re-inforcing this misconception. - When comparing how other frameworks use the term material, a material sometimes describes a multi-pass fragment processing technique which isn't the case in Cogl. - In code, "CoglPipeline" will hopefully be a much more self documenting summary of what these objects represent; a full GPU pipeline configuration including, for example, vertex processing, fragment processing and blending. - When considering the API documentation story, at some point we need a document introducing developers to how the "GPU pipeline" works so it should become intuitive that CoglPipeline maps back to that description of the GPU pipeline. - This is consistent in terminology and concept to OpenGL 4's new pipeline object which is a container for program objects. Note: The cogl-material.[ch] files have been renamed to cogl-material-compat.[ch] because otherwise git doesn't seem to treat the change as a moving the old cogl-material.c->cogl-pipeline.c and so we loose all our git-blame history. cogl/Makefile.am | 24 +- cogl/cogl-atlas-texture.c | 14 +- cogl/cogl-atlas.c | 2 +- cogl/cogl-buffer-private.h | 2 +- cogl/cogl-clip-stack.c | 6 +- cogl/cogl-context.c | 48 +- cogl/cogl-context.h | 28 +- cogl/cogl-framebuffer.c | 2 +- cogl/cogl-journal-private.h | 8 +- cogl/cogl-journal.c | 128 +- cogl/cogl-material-arbfp-private.h | 36 - cogl/cogl-material-arbfp.c | 1218 ------ cogl/cogl-material-compat.c | 495 +++ cogl/cogl-material-compat.h | 1396 +++++++ cogl/cogl-material-fixed-private.h | 36 - cogl/cogl-material-fixed.c | 261 -- cogl/cogl-material-glsl-private.h | 36 - cogl/cogl-material-glsl.c | 452 --- cogl/cogl-material-opengl-private.h | 155 - cogl/cogl-material-opengl.c | 1212 ------ cogl/cogl-material-private.h | 957 ----- cogl/cogl-material.c | 5743 --------------------------- cogl/cogl-material.h | 1440 ------- cogl/cogl-path.c | 42 +- cogl/cogl-pipeline-arbfp-private.h | 36 + cogl/cogl-pipeline-arbfp.c | 1218 ++++++ cogl/cogl-pipeline-fixed-private.h | 36 + cogl/cogl-pipeline-fixed.c | 261 ++ cogl/cogl-pipeline-glsl-private.h | 36 + cogl/cogl-pipeline-glsl.c | 452 +++ cogl/cogl-pipeline-opengl-private.h | 156 + cogl/cogl-pipeline-opengl.c | 1212 ++++++ cogl/cogl-pipeline-private.h | 993 +++++ cogl/cogl-pipeline.c | 5725 ++++++++++++++++++++++++++ cogl/cogl-pipeline.h | 1234 ++++++ cogl/cogl-primitives.c | 212 +- cogl/cogl-texture-2d-private.h | 2 +- cogl/cogl-texture-2d-sliced-private.h | 2 +- cogl/cogl-texture-2d-sliced.c | 2 +- cogl/cogl-texture-2d.c | 2 +- cogl/cogl-texture-3d-private.h | 4 +- cogl/cogl-texture-3d.c | 4 +- cogl/cogl-texture-private.h | 4 +- cogl/cogl-texture-rectangle-private.h | 2 +- cogl/cogl-texture-rectangle.c | 2 +- cogl/cogl-texture.c | 26 +- cogl/cogl-types.h | 52 +- cogl/cogl-util.c | 2 +- cogl/cogl-vertex-attribute.c | 76 +- cogl/cogl-vertex-buffer.c | 92 +- cogl/cogl.c | 68 +- cogl/cogl.h | 9 +- cogl/driver/gl/cogl-texture-driver-gl.c | 4 +- cogl/driver/gles/cogl-texture-driver-gles.c | 4 +- cogl/winsys/cogl-texture-pixmap-x11.c | 6 +- 55 files changed, 13713 insertions(+), 11962 deletions(-) commit 47ceb34ba914efde2621c05ff9776ed74e7f33ad Author: Robert Bragg Date: Wed Oct 27 12:43:36 2010 +0100 pango: Use CoglMaterial type for materials Instead of using the CoglHandle type for material variables this updates the pango code to use CoglMaterial * instead. CoglHandle is the old typename which is being phased out of the API. pango/cogl-pango-display-list.c | 6 +++--- pango/cogl-pango-display-list.h | 4 ++-- pango/cogl-pango-render.c | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) commit e673de0b55c0757306539fee1c91117fd170c677 Author: Robert Bragg Date: Wed Oct 27 12:36:24 2010 +0100 pango: push/pop source instead of trashing users source The pango-display-list code was calling cogl_set_source in numerous places and it didn't appear to be saving the users source to restore later. This could result in the user inadvertantly drawing a primitive with one of these internally managed materials instead of one that they chose. To rectify this the code now uses cogl_{push,pop}_source to save and restore the users source. pango/cogl-pango-display-list.c | 76 +++++++++++++++++++++++---------------- 1 files changed, 45 insertions(+), 31 deletions(-) commit 44644d0a9e793aa9d1d60090e00d847a6fc9bd0e Author: Robert Bragg Date: Mon Oct 18 17:17:22 2010 +0100 primitives: implements cogl_polygon on vertex_attributes This updates the implementation of cogl_polygon so it sits on the new CoglVertexArray and CoglVertexAttribute apis. This lets us minimize the number of different drawing paths we have to maintain in Cogl. Since the sliced texture support for cogl_polygon has been broken for a long time now and no one has complained this patch also greatly simplifies the code by not doing any special material validation so cogl_polygon will be restricted in the same way as cogl_draw_vertex_attributes. (i.e. sliced textures not supported). cogl/cogl-context.c | 5 + cogl/cogl-context.h | 3 +- cogl/cogl-primitives.c | 579 +++++++++++++---------------------------------- 3 files changed, 167 insertions(+), 420 deletions(-) commit 37657a5dd84539152fff4e4788f20700c157b1a9 Author: Robert Bragg Date: Tue Oct 26 19:22:57 2010 +0100 journal: port to the vertex_attributes API Instead of using raw OpenGL in the journal we now use the vertex attributes API instead. This is part of an ongoing effort to reduce the number of drawing paths we maintain in Cogl. cogl/cogl-context.c | 4 + cogl/cogl-context.h | 1 + cogl/cogl-journal.c | 262 +++++++++++++++++++++++++++------------------------ 3 files changed, 145 insertions(+), 122 deletions(-) commit afb8a64bc431ba9e6c6392a49faa311e4d5817da Author: Robert Bragg Date: Tue Oct 26 18:56:57 2010 +0100 vertex-buffer: use cogl_get_rectangle_indices The functionality of cogl_vertex_buffer_indices_get_for_quads is now provided by cogl_get_rectangle_indices so this reworks the former to now work in terms of the latter so we don't have duplicated logic. cogl/cogl-context.c | 9 ---- cogl/cogl-context.h | 6 --- cogl/cogl-vertex-buffer.c | 101 ++++++++++++++++----------------------------- 3 files changed, 36 insertions(+), 80 deletions(-) commit c6761aa93b50fef7c22267c6065fe197e9173a94 Author: Robert Bragg Date: Tue Oct 12 12:55:23 2010 +0100 vertex-buffer: port to CoglVertexAttributes + CoglPrimitive As part of an ongoing effort to reduce the number of draw paths we have in Cogl this re-works CoglVertexBuffer to use the CoglVertexAttribute and CoglPrimitive APIs instead of using raw GL. cogl/cogl-vertex-buffer-private.h | 42 +- cogl/cogl-vertex-buffer.c | 1140 ++++++++++++------------------------- 2 files changed, 371 insertions(+), 811 deletions(-) commit b03f905094fdbb62bfc9d5089173ab79a161a505 Author: Robert Bragg Date: Tue Oct 26 18:57:33 2010 +0100 primitive: adds immutable ref/unref mechanism This adds a way to mark that a primitive is in use so that modifications will generate a warning. The plan is to use this mechanism when batching primitives in the journal to warn users that mid-scene modifications of primitives is not allowed. cogl/cogl-primitive-private.h | 8 ++++ cogl/cogl-primitive.c | 77 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 0 deletions(-) commit a03a5814e7b8af7d6cefcaf1cbc2b9dd13252a6b Author: Robert Bragg Date: Tue Oct 12 15:48:31 2010 +0100 primitive: Adds convenience constructors This adds convenience primitive constructors named like: cogl_primitive_new_p3 or cogl_primitive_new_p3c4 or cogl_primitive_new_p3t2c4 where the letters correspond to the interleved vertex attributes layouts such as CoglP3Vertex which is a struct with 3 float x,y,z members for the [p]osition, or CoglP3T2C4Vertex which is a struct with 3 float x,y,z members for the [p]osition, 2 float s,t members for the [t]exture coordinates and 4 unsigned byte r,g,b,a members for the [c]olor. The hope is that people will find these convenient enough to replace cogl_polygon. cogl/cogl-primitive.c | 246 +++++++++++++++++++++++++++++++++++++++++++++++++ cogl/cogl-primitive.h | 66 ++++++++++--- 2 files changed, 296 insertions(+), 16 deletions(-) commit 9498d505dd94657e1af72147515c9fb746519115 Author: Robert Bragg Date: Tue Oct 12 12:54:07 2010 +0100 cogl: Adds experimental CoglPrimitive API A CoglPrimitive is a retainable object for drawing a single primitive, such as a triangle strip, fan or list. CoglPrimitives build on CoglVertexAttributes and CoglIndices which themselves build on CoglVertexArrays and CoglIndexArrays respectively. A CoglPrimitive encapsulates enough information such that it can be retained in a queue (e.g. the Cogl Journal, or renderlists in the future) and drawn at some later time. cogl/Makefile.am | 3 + cogl/cogl-primitive-private.h | 46 ++++++ cogl/cogl-primitive.c | 223 +++++++++++++++++++++++++++++ cogl/cogl-primitive.h | 311 +++++++++++++++++++++++++++++++++++++++++ cogl/cogl.h | 1 + 5 files changed, 584 insertions(+), 0 deletions(-) commit 070d90937be07d66449ba35c3b67a0aee42b4d59 Author: Robert Bragg Date: Tue Oct 12 12:53:10 2010 +0100 cogl: Adds experimental CoglVertexAttribute API A CoglVertexAttribute defines a single attribute contained in a CoglVertexArray. I.e. a CoglVertexArray is simply a buffer of N bytes intended for containing a collection of attributes (position, color, normals etc) and a CoglVertexAttribute defines one such attribute by specifying its start offset in the array, its type, the number of components and the stride etc. cogl/Makefile.am | 3 + cogl/cogl-vertex-attribute-private.h | 80 +++ cogl/cogl-vertex-attribute.c | 882 ++++++++++++++++++++++++++++++++++ cogl/cogl-vertex-attribute.h | 205 ++++++++ cogl/cogl.h | 1 + 5 files changed, 1171 insertions(+), 0 deletions(-) commit 6e620e94b69dea9ee2fb3c859de0a9a517129e22 Author: Robert Bragg Date: Tue Oct 12 12:48:58 2010 +0100 cogl: Adds experimental CoglIndices API CoglIndices define a range of indices inside a CoglIndexArray. I.e. a CoglIndexArray is simply a buffer of N bytes and you can then instantiate multiple CoglIndices collections that define a sub-region of a CoglIndexArray by specifying a start offset and an index data type. cogl/Makefile.am | 3 + cogl/cogl-context.c | 18 +++ cogl/cogl-context.h | 10 ++ cogl/cogl-indices-private.h | 57 ++++++++++ cogl/cogl-indices.c | 253 +++++++++++++++++++++++++++++++++++++++++++ cogl/cogl-indices.h | 74 +++++++++++++ cogl/cogl.h | 1 + 7 files changed, 416 insertions(+), 0 deletions(-) commit 296d14e94625b95304092d0b66d1d37871f58b71 Author: Robert Bragg Date: Tue Oct 12 12:34:27 2010 +0100 cogl: Adds experimental CoglVertexArray type This adds a new CoglVertexArray object which is a subclass of CoglBuffer used to hold vertex attributes. A later commit will add a CoglVertexAttribute API which will be used to describe the attributes inside a CoglVertexArray. cogl/Makefile.am | 3 + cogl/cogl-vertex-array-private.h | 39 +++++++++++++++++++ cogl/cogl-vertex-array.c | 70 ++++++++++++++++++++++++++++++++++ cogl/cogl-vertex-array.h | 77 ++++++++++++++++++++++++++++++++++++++ cogl/cogl.h | 1 + 5 files changed, 190 insertions(+), 0 deletions(-) commit 4d990a93a8ee0dfcbb16d91d944f7c096f55b9f8 Author: Robert Bragg Date: Tue Oct 12 12:36:22 2010 +0100 cogl: Adds experimental CoglIndexArray type A CoglIndexArray is a subclass of CoglBuffer and will be used to hold vertex indices. A later commit will add a CoglIndices API which will allow describing a range of indices inside a CoglIndexArray. cogl/Makefile.am | 3 + cogl/cogl-index-array-private.h | 39 ++++++++++++ cogl/cogl-index-array.c | 131 +++++++++++++++++++++++++++++++++++++++ cogl/cogl-index-array.h | 79 +++++++++++++++++++++++ cogl/cogl.h | 1 + 5 files changed, 253 insertions(+), 0 deletions(-) commit 7901e30aacda2dad8d4aae791721ad0ad79eac2d Author: Robert Bragg Date: Tue Oct 26 19:08:51 2010 +0100 buffer: adds immutable ref/unref mechanism This adds an internal mechanism to mark that a buffer is in-use so that a warning can be generated if the user attempts to modify the buffer. The plans is for the journal to use this mechanism so that we can warn users about mid-scene modifications of buffers. cogl/cogl-buffer-private.h | 8 ++++++++ cogl/cogl-buffer.c | 42 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 48 insertions(+), 2 deletions(-) commit 7cc6dedea495f9b84bd974209b770f2cfe389f52 Author: Robert Bragg Date: Tue Oct 12 13:14:17 2010 +0100 buffer: make _bind() return base pointer We now make _cogl_buffer_bind return a base pointer for the bound buffer which can be used with OpenGL. The pointer will be NULL for GPU based buffers or may point to an malloc'd buffer. Since OpenGL expects an offset instead of a pointer when dealing with buffer objects this means we can handle fallback malloc buffers and GPU buffers in a consistent way. cogl/cogl-bitmap.c | 28 ++++++++-------------------- cogl/cogl-buffer-private.h | 2 +- cogl/cogl-buffer.c | 17 ++++++++++------- 3 files changed, 19 insertions(+), 28 deletions(-) commit 406d0c4a289a1388f9fc1aeb0b6938309b625218 Author: Robert Bragg Date: Tue Oct 26 19:02:04 2010 +0100 material: Bail out faster if re-flushing unchanged material This allows _cogl_material_flush_gl_state to bail out faster if repeatedly asked to flush the same material and we can see the material hasn't changed. Since we can rely on the material age incrementing when any material property changes or any associated layer property changes then we can track the age of the material after flushing so it can be compared with the age of the material if it is subsequently re-flushed. If the age is the same we only have to re-assert the texture object state. cogl/cogl-context.h | 1 + cogl/cogl-material-opengl.c | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) commit 8f15f63212389aac582db2f99696a9c7d6d2714d Author: Robert Bragg Date: Tue Oct 26 17:43:16 2010 +0100 material-node: track if node owns reference on parent MaterialNodes are used for the sparse graph of material state and layer state. In the case of materials there is the idea of weak materials that don't take a reference on their parent and in that case we need to be careful not to unref our parent during _cogl_material_node_unparent_real. This adds a has_parent_reference member to the CoglMaterialNode struct so we now know when to skip the unref. cogl/cogl-material-private.h | 4 ++++ cogl/cogl-material.c | 4 +++- 2 files changed, 7 insertions(+), 1 deletions(-) commit 7927aed5d60e494c9072087bf5451617d49d6b49 Author: Robert Bragg Date: Tue Oct 26 17:38:58 2010 +0100 cogl-object: correctly free user_data_array in _unref If there is private data associated with a CoglObject then there may be a user_data_array that needs to be freed. The code was mistakenly freeing the array inside the loop that was actually iterating over the user data array notifying the objects destruction instead of waiting until all the data entries had been destroyed. cogl/cogl-object.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit 63206a208b30c036b785cdf58c312088bafd62cd Author: Neil Roberts Date: Fri Oct 15 18:00:29 2010 +0100 Merge cogl-program-{gl,gles}.c into one cogl-program.c This merges the two implementations of CoglProgram for the GLES2 and GL backends into one. The implementation is more like the GLES2 version which would track the uniform values and delay sending them to GL. CoglProgram is now effectively just a GList of CoglShaders along with an array of stored uniform values. CoglProgram never actually creates a GL program, instead this is left up to the GLSL material backend. This is necessary on GLES2 where we may need to relink the user's program with different generated shaders depending on the other emulated fixed function state. It will also be necessary in the future GLSL backends for regular OpenGL. The GLSL and ARBfp material backends are now the ones that create and link the GL program from the list of shaders. The linked program is attached to the private material state so that it can be reused if the CoglProgram is used again with the same material. This does mean the program will get relinked if the shader is used with multiple materials. This will be particularly bad if the legacy cogl_program_use function is used because that effectively always makes one-shot materials. This problem will hopefully be alleviated if we make a hash table with a cache of generated programs. The cogl program would then need to become part of the hash lookup. Each CoglProgram now has an age counter which is incremented every time a shader is added. This is used by the material backends to detect when we need to create a new GL program for the user program. The internal _cogl_use_program function now takes a GL program handle rather than a CoglProgram. It no longer needs any special differences for GLES2. The GLES2 wrapper function now also uses this function to bind its generated shaders. The ARBfp shaders no longer store a copy of the program source but instead just directly create a program object when cogl_shader_source is called. This avoids having to reupload the source if the same shader is used in multiple materials. There are currently a few gross hacks to get the GLES2 backend to work with this. The problem is that the GLSL material backend is now generating a complete GL program but the GLES2 wrapper still needs to add its fixed function emulation shaders if the program doesn't provide either a vertex or fragment shader. There is a new function in the GLES2 wrapper called _cogl_gles2_use_program which replaces the previous cogl_program_use implementation. It extracts the GL shaders from the GL program object and creates a new GL program containing all of the shaders plus its fixed function emulation. This new program is returned to the GLSL material backend so that it can still flush the custom uniforms using it. The user_program is attached to the GLES2 settings struct as before but its stored using a GL program handle rather than a CoglProgram pointer. This hack will go away once the GLSL material backend replaces the GLES2 wrapper by generating the code itself. Under Mesa this currently generates some GL errors when glClear is called in test-cogl-shader-glsl. I think this is due to a bug in Mesa however. When the user program on the material is changed the GLSL backend gets notified and deletes the GL program that it linked from the user shaders. The program will still be bound in GL however. Leaving a deleted shader bound exposes a bug in Mesa's glClear implementation. More details are here: https://bugs.freedesktop.org/show_bug.cgi?id=31194 cogl/Makefile.am | 6 +- cogl/cogl-internal.h | 4 +- cogl/cogl-material-arbfp.c | 36 +- cogl/cogl-material-fixed.c | 17 +- cogl/cogl-material-glsl.c | 355 ++++++++++++++- cogl/cogl-material-opengl.c | 158 +++----- cogl/cogl-material-private.h | 2 +- cogl/cogl-program-private.h | 78 ++++ cogl/cogl-program.c | 683 ++++++++++++++++++++++++++++ cogl/cogl-shader-private.h | 1 - cogl/cogl-shader.c | 56 ++- cogl/driver/gl/cogl-feature-functions-gl.h | 11 + cogl/driver/gl/cogl-program-gl.c | 488 -------------------- cogl/driver/gl/cogl-program-gl.h | 46 -- cogl/driver/gles/cogl-gles2-wrapper.c | 194 +++------ cogl/driver/gles/cogl-gles2-wrapper.h | 9 +- cogl/driver/gles/cogl-program-gles.c | 437 ------------------ cogl/driver/gles/cogl-program-gles.h | 52 --- 18 files changed, 1308 insertions(+), 1325 deletions(-) commit 7ab928a4e015fb0df5507c5482b83e113be43396 Author: Neil Roberts Date: Wed Oct 27 15:07:03 2010 +0100 cogl: Use separate materials for set_source_color and texture Previously cogl_set_source_color and cogl_set_source_texture modified a single global material. If an application then mixes using cogl_set_source_color and texture then the material will constantly need a new ARBfp program because the numbers of layers alternates between 0 and 1. This patch just adds a second global material that is only used for cogl_set_source_texture. I think it would still end up flushing the journal if cogl_set_source_texture is used with multiple different textures but at least it should avoid a recompile unless the texture target also changes. It might be nice to somehow attach a material to the CoglTexture for use with cogl_set_source_texture but it would be difficult to implement this without creating a circular reference. cogl/cogl-context.c | 3 +++ cogl/cogl-context.h | 3 ++- cogl/cogl.c | 11 ++--------- 3 files changed, 7 insertions(+), 10 deletions(-) commit 812dd1d83ded5936dd0bc1985856efd8746e8e47 Author: Robert Bragg Date: Tue Oct 12 12:53:44 2010 +0100 Move IndicesType and VerticesMode typedefs to cogl-types.h This moves the CoglIndicesType and CoglVerticesMode typedefs from cogl-vertex-buffer.h to cogl-types.h so they can be shared with the anticipated cogl vertex attribute API. cogl/cogl-types.h | 48 +++++++++++++++++++++++++++++++++++++++++++++ cogl/cogl-vertex-buffer.h | 47 -------------------------------------------- 2 files changed, 48 insertions(+), 47 deletions(-) commit 6fe6dd18ac06eee4c8129cdea618fe7036a8cbc2 Author: Robert Bragg Date: Tue Oct 26 16:05:00 2010 +0100 buffer: BufferBindTarget + BufferUsageHint enum renaming This renames the BufferBindTarget + BufferUsageHint enums to match the anticipated new APIs for "index arrays" and "vertex arrays" as opposed to using the terms "vertices" or "indices". cogl/cogl-buffer-private.h | 5 +++-- cogl/cogl-buffer.c | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) commit 525504f9bf82eac89a0950c134544aa7ef034d64 Author: Robert Bragg Date: Mon Oct 18 18:50:02 2010 +0100 buffer: warn if (offset + size) > buffer->size previously we would silently bail out if the given offset + data size would overflow the buffer size. Now we use g_return_val_if_fail so we get a warning if we hit this case. cogl/cogl-buffer.c | 7 ++----- 1 files changed, 2 insertions(+), 5 deletions(-) commit aafcee31b20d8afe6b91fa84a30de855b07f2020 Author: Robert Bragg Date: Tue Oct 12 13:25:05 2010 +0100 pixel-array: Remove some benign variables There were some completely unused static global variables declared in cogl-pixel-array.c which this patch removes. cogl/cogl-pixel-array.c | 7 ------- 1 files changed, 0 insertions(+), 7 deletions(-) commit 46b614a7c3c5b1b30d1f29a3c7b5c6e082e11c2c Author: Robert Bragg Date: Tue Oct 12 13:23:44 2010 +0100 pixel-array: Remove flags member and flag macros There are no flags associated with pixel-arrays so we don't need the flags member or flag macros. cogl/cogl-pixel-array-private.h | 18 ------------------ cogl/cogl-pixel-array.c | 2 -- 2 files changed, 0 insertions(+), 20 deletions(-) commit e18bfd92e4985fb69692916741334dc2209ef85b Author: Robert Bragg Date: Tue Oct 26 16:06:46 2010 +0100 buffer: Add a store_created bit field member This adds a store_created bit field to CoglBuffer so we know if the underlying buffer has been allocated yet. Previously the code was trying to do something really wrong by accidentally using the COGL_PIXEL_ARRAY_FLAG_IS_SET macro (note "PIXEL_ARRAY") and what is more odd was the declaration of a CoglPixelArray *pixel_array in cogl-buffer.c which the buffer was being cast too before calling using the macro. Probably this was the fall-out of some previous code re-factoring. cogl/cogl-buffer-private.h | 2 ++ cogl/cogl-buffer.c | 25 +++++++++++-------------- 2 files changed, 13 insertions(+), 14 deletions(-) commit 071253c48be87926a942d6e1d5d0f6289220f9b5 Author: Robert Bragg Date: Tue Oct 12 11:46:29 2010 +0100 buffer: remove flag macros All the macros get used for are to |= (a new flag bit), &= ~(a flag bit) or use the & operator to test if a flag bit is set. I haven't found the code more readable with these macros, but several times now I've felt the need to double check if these macros do anything else behind the hood or I've forgotten what flags are available so I've had to go to the macro definition to see what the full enum names are for the flags (the macros use symbol concatenation) so I can search for the definition of all the flags. It turns out they are defined next to the macro so you don't have to search far, but without the macro that wouldn't have been necessary. The more common use of the _IS_SET macro is actually more concise expanded and imho since it doesn't hide anything in a separate header file the code is more readable without the macro. cogl/cogl-bitmap.c | 4 ++-- cogl/cogl-buffer-private.h | 9 --------- cogl/cogl-buffer.c | 20 ++++++++++---------- 3 files changed, 12 insertions(+), 21 deletions(-) commit 1bed79d19a3e6add697955f9dfb5c21bfaf04c84 Author: Robert Bragg Date: Tue Oct 12 12:35:47 2010 +0100 material: Adds _cogl_material_get_layer_texture This is a counter part for _cogl_material_layer_get_texture which takes a layer index instead of a direct CoglMaterialLayer pointer. The aim is to phase out code that directly iterates the internal layer pointers of a material since the layer pointers can change if any property of any layer is changed making direct layer pointers very fragile. cogl/cogl-material-private.h | 4 ++++ cogl/cogl-material.c | 9 +++++++++ 2 files changed, 13 insertions(+), 0 deletions(-) commit a74c26d8d14fd6f703f4887569b70c5dfd2aff5f Author: Robert Bragg Date: Mon Oct 18 19:00:50 2010 +0100 material: add internal layer filter getters This adds internal _cogl_material_get_layer_filters and _cogl_material_get_layer_{min,mag}_filter functions which can be used to query the filters associated with a layer using a layer_index, as opposed to a layer pointer. Accessing layer pointers is considered deprecated so we need to provide layer_index based replacements. cogl/cogl-material-private.h | 14 +++++++++++++ cogl/cogl-material.c | 45 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 0 deletions(-) commit 0330a7a2e68531773107d14a81626aa1d7d77a51 Author: Robert Bragg Date: Sun Aug 1 23:05:28 2010 +0100 material: Adds missing get_layer_wrap_mode_xyz prototypes This adds missing getter function prototypes for cogl_material_get_layer_wrap_mode_{s,t,p} cogl/cogl-material.h | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 52 insertions(+), 0 deletions(-) commit 876bf6cb287000de5d982199324453c7c18bbdaa Author: Robert Bragg Date: Sun Aug 1 16:07:38 2010 +0100 vertex-buffer: remove the unstrided CBO type When we come to submitting the users given attributes we sort them into different types of buffers. Previously we had three types; strided, unstrided and multi-pack. Really though unstrided was just a limited form of multi-pack buffer and didn't imply any hind of special optimization so this patch consolidates some code by reducing to just two types; strided and multi-pack. cogl/cogl-vertex-buffer-private.h | 5 ++--- cogl/cogl-vertex-buffer.c | 33 ++++++--------------------------- 2 files changed, 8 insertions(+), 30 deletions(-) commit b64c1c97817fb51c61f17a21beeae7fabde70c69 Author: Robert Bragg Date: Wed Jul 28 13:59:34 2010 +0100 material: Adds _cogl_material_pre_paint_for_layer This is a counter part for _cogl_material_layer_pre_paint which takes a layer index instead of a direct CoglMaterialLayer pointer. The aim is to phase out code that directly iterates the internal layer pointers of a material since the layer pointers can change if any property of any layer is changed making direct layer pointers very fragile. cogl/cogl-material-private.h | 9 +++++++++ cogl/cogl-material.c | 8 ++++++++ 2 files changed, 17 insertions(+), 0 deletions(-) commit 1b9a247174d7d23a1de36738437046734ef9568d Author: Robert Bragg Date: Mon Oct 25 13:25:21 2010 +0100 cogl: Adds {push,pop,get}_source functions This exposes the idea of a stack of source materials instead of just having a single current material. This allows the writing of orthogonal code that can change the current source material and restore it to its previous state. It also allows the implementation of new composite primitives that may want to validate the current source material and possibly make override changes in a derived material. cogl/cogl-clip-stack.c | 7 +-- cogl/cogl-context.c | 6 +- cogl/cogl-context.h | 2 +- cogl/cogl-material-private.h | 3 + cogl/cogl-path.c | 41 ++++++------- cogl/cogl-primitives.c | 99 ++++++++++++++---------------- cogl/cogl-texture.c | 7 +-- cogl/cogl-vertex-buffer.c | 38 +++++++----- cogl/cogl.c | 109 +++++++++++++++++++++++++++++++--- cogl/cogl.h | 58 +++++++++++++++--- doc/reference/cogl/cogl-sections.txt | 3 + 11 files changed, 252 insertions(+), 121 deletions(-) commit 4ccd915064754e1f7718e44d5603f6ef50f017ba Merge: 8986877 c6977cd Author: Emmanuele Bassi Date: Mon Oct 25 23:44:53 2010 +0100 Merge branch 'private-cleanup' * private-cleanup: Add copyright notices Clean up clutter-private.h/6 Clean up clutter-private.h/5 Clean up clutter-private.h/4 Clean up clutter-private.h/3 Clean up clutter-private.h/2 Clean up clutter-private.h/1 commit 8986877c3ec0d362c7b694f6eb13bdbc92a8214d Merge: c381f0c 66680d2 Author: Emmanuele Bassi Date: Mon Oct 25 17:09:46 2010 +0100 Merge branch 'wip/path-constraint' * wip/path-constraint: docs: Add PathConstraint tests: Add a PathConstraint interactive test Add ClutterPathConstraint actor-box: Add setters for origin and size commit c381f0cb8b0edcc6927438626730904397e113f3 Author: Neil Roberts Date: Mon Oct 25 13:15:01 2010 +0100 cogl-context-winsys: Avoid zero-length arrays When compiling for non-glx platforms the winsys feature data array ends up empty. Empty arrays cause problems for MSVC so this patch adds a stub entry so that the array always has at least one entry. Based on a patch by Ole André Vadla Ravnås cogl/winsys/cogl-context-winsys.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) commit 371e6bd47ccea22a0f309c04765c2d2f1cb9b429 Author: Neil Roberts Date: Mon Oct 25 13:08:52 2010 +0100 Avoid mixing declarations and code Mixing declarations and code causes problems for MSVC as it is a C99 feature so we should try to avoid it. cogl/cogl-material-opengl.c | 9 ++++++++- cogl/cogl-material.c | 4 +++- 2 files changed, 11 insertions(+), 2 deletions(-) commit 66680d22f82449f991a4f5e8e2589bc276d6caa9 Author: Neil Roberts Date: Mon Oct 4 14:34:24 2010 +0100 cogl-texture-2d-sliced: Use the other backends for the slices Instead of directly manipulating GL textures itself, CoglTexture2DSliced now works in terms of CoglHandles. It creates the texture slices using cogl_texture_new_with_size which should always end up creating a CoglTexture2D because the size should fit. This allows us to avoid replicating some code such as the first pixel mipmap tracking and it better enforces the separation that each texture backend is the only place that contains code dealing with each texture target. cogl/cogl-texture-2d-sliced-private.h | 20 +- cogl/cogl-texture-2d-sliced.c | 1103 ++++++++++++++------------------- 2 files changed, 462 insertions(+), 661 deletions(-) commit b540dcb75a45c2f39c59752e5d582d6299da38d5 Author: Neil Roberts Date: Mon Oct 4 15:27:38 2010 +0100 Support foreign textures in the texture-2d and rectangle backends This adds two new internal functions to create a foreign texture for the texture 2d and rectangle backends. cogl_texture_new_from_foreign will now use one of these backends directly if there is no waste instead of always using the sliced texture backend. cogl/cogl-texture-2d-private.h | 7 ++ cogl/cogl-texture-2d.c | 135 +++++++++++++++++++++++++++++++-- cogl/cogl-texture-rectangle-private.h | 7 ++ cogl/cogl-texture-rectangle.c | 118 +++++++++++++++++++++++++++-- cogl/cogl-texture.c | 42 ++++++++-- 5 files changed, 287 insertions(+), 22 deletions(-) commit c6977cdb13fd0c2743863edddf9e2e18b7725203 Author: Damien Lespiau Date: Thu Oct 14 16:32:13 2010 +0100 build: Fix EGL/CEX100 build with GLES2 Some headers files have been renamed or removed and the gles(2) did not compile anymore, fix that. cogl/driver/gles/cogl-gles.c | 2 +- cogl/driver/gles/cogl-gles2-wrapper.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 963a0662b430c00da0e9ee94e41652f326902f92 Author: Kristian Høgsberg Date: Tue Sep 28 10:17:46 2010 -0400 Add wayland backend This adds a clutter backend for running under the wayland window system. Initial cogl framebuffer integration by Robert Bragg. cogl/Makefile.am | 4 ++++ cogl/winsys/cogl-egl.c | 10 +++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) commit a80a65ce8f0d77522a70e4cb00a8531a8902c831 Author: Neil Roberts Date: Tue Oct 5 17:17:53 2010 +0100 cogl-texture-2d-sliced: Use the smallest possible waste When picking a size for the last slice in a texture, Cogl would always pick the biggest power of two size that doesn't create too much waste and is less than or equal to the previous slice size. However this can end up creating a texture that is bigger than needed if there is a smaller power of two. For example, if the maximum waste is 127 (the current default) and we try to create a texture that is 257 pixels wide it will decide that the next power of two (512) is too much waste (255) so it will create the first slice at 256 pixels wide. Then we only have 1 pixel left to allocate but Cogl would pick the next smaller size that has a small enough waste which is 128. But of course 1 is already a power of two so that's redundantly oversized by 127. This patch fixes it so that whenever it finds a size that would be big enough, instead of using exactly that it picks the next power of two up from the size we need to fill. http://bugzilla.clutter-project.org/show_bug.cgi?id=2355 cogl/cogl-texture-2d-sliced.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 01e72335a030735d97889528f29694179106f8c5 Author: Damien Lespiau Date: Tue Oct 5 08:03:19 2010 +0100 cogl: Use Cogl (not COGL) consistently If I remember correctly, Robert wants to name Cogl, Cogl (not COGL) so start by having a consistent naming in the code. cogl/cogl-debug.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit c878acf6cf4c0e4532d57538f9f5892616f9b610 Author: Emmanuele Bassi Date: Mon Oct 4 14:12:21 2010 +0100 cogl-x11: Trap glXDestroyPixmap() There are ordering issues in the pixmap destruction with current and past X11 server, Mesa and dri2. Under some circumstances, an X pixmap might be destroyed with the GLX pixmap still referencing it, and thus the X server will decide to destroy the GLX pixmap as well; then, when Cogl tries to destroy the GLX pixmap, it gets BadDrawable errors. Clutter 1.2 used to trap + sync all calls to glXDestroyPixmap(), but then we assumed that the ordering issue had been solved. So, we're back to square 1. I left a Big Fat Comment™ right above the glXDestroyPixmap() call referencing the bug and the reasoning behind the trap, so that we don't go and remove it in the future without checking that the issue has been in fact solved. http://bugzilla.clutter-project.org/show_bug.cgi?id=2324 cogl/winsys/cogl-texture-pixmap-x11.c | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-) commit d9e18215015b37da6845d4bfdc6abbf29aa5ec3f Author: Emmanuele Bassi Date: Mon Oct 4 08:57:29 2010 +0100 build: Unconditionally add GLES2 shaders to EXTRA_DIST cogl/Makefile.am | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit ac9e59721a52a01b110152ce05759603da0be07c Merge: f85d152 51b0905 Author: Emmanuele Bassi Date: Thu Sep 30 12:24:32 2010 +0100 Merge remote branch 'elliot/events-buttons' * elliot/events-buttons: cookbook: Add recipe about handling button events cookbook: Example of using button press and release events cookbook: Example of ClutterClickAction cookbook: Example of simple handling of button events commit f85d1520a01fe433fde857462a1d431db6a5d956 Author: Robert Bragg Date: Fri Sep 24 01:01:33 2010 +0100 material: tweak dot file debug code When using the debug function _cogl_debug_dump_materials_dot_file to write a dot file representing the sparse graph of material state we now only show a link between materials and layers when the material directly owns that layer reference (i.e. just those referenced in material->layer_differences) This makes it possible to see when ancestors of a material are being deferred too for layer state. For example when looking at the graph if you see that a material has an n_layers of 3 but there is only a link to 2 layers, then you know you need to look at it's ancestors to find the last layer. cogl/cogl-material.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) commit 51b090541a0879e1f117deb0a4d6f66efae16fd1 Author: Neil Roberts Date: Wed Sep 29 15:40:22 2010 +0100 cogl-texture-2d-sliced: Don't create the slice textures twice Both of the cogl_texture_2d_sliced_new functions called the slices_create function which creates the underlying GL textures. However this was also called by init_base so the textures would end up being created twice. This would make it leak the GL textures and the arrays which point to them. cogl/cogl-texture-2d-sliced.c | 18 ------------------ 1 files changed, 0 insertions(+), 18 deletions(-) commit c4638fa1df9b8c9ad58f96dab84c7087893018fa Merge: d011502 eb179d4 Author: Emmanuele Bassi Date: Wed Sep 29 15:55:58 2010 +0100 Merge branch 'wip/non-recursive' * wip/non-recursive: build: Start moving to a non-recursive layout commit d011502603bcb442ed51f641d6bd14c978582afd Author: Robert Bragg Date: Tue Sep 7 23:35:26 2010 +0100 cogl: removes unused _cogl_setup_viewport Clutter has now taken responsibility for managing its viewport, projection matrix and view transform as part of ClutterStage so _cogl_setup_viewport is no longer used by anything, and since it's quite an obscure API anyway it's we've taken the opportunity to remove the function. cogl/cogl.c | 74 ----------------------------------------------------------- cogl/cogl.h | 26 -------------------- 2 files changed, 0 insertions(+), 100 deletions(-) commit eb179d4b679f0dc9d25e2a8e0f13a99f678b1bf9 Author: Emmanuele Bassi Date: Mon Sep 13 11:30:30 2010 +0100 build: Start moving to a non-recursive layout *** WARNING: THIS COMMIT CHANGES THE BUILD *** Do not recurse into the backend directories to build private, internal libraries. We only recurse from clutter/ into the cogl sub-directory; from there, we don't recurse any further. All the backend-specific code in Cogl and Clutter is compiled conditionally depending on the macros defined by the configure script. We still recurse from the top-level directory into doc, clutter and tests, because gtk-doc and tests do not deal nicely with non-recursive layouts. This change makes Clutter compile slightly faster, and cleans up the build system, especially when dealing with introspection data. Ideally, we also want to make Cogl part of the top-level build, so that we can finally drop the sed trick to change the shared library from the GIR before compiling it. Currently disabled: ‣ OSX backend ‣ Fruity backend Currently enabled but untested: ‣ EGL backend ‣ Windows backend cogl/Makefile.am | 136 +++++-- cogl/cogl-context.h | 10 +- cogl/cogl-material-arbfp.c | 9 +- cogl/cogl-material-fixed.c | 9 +- cogl/cogl-material-glsl.c | 8 +- cogl/cogl-material-opengl.c | 9 +- cogl/driver/gl/Makefile.am | 34 -- cogl/driver/gl/cogl-context-driver-gl.c | 39 ++ cogl/driver/gl/cogl-context-driver-gl.h | 53 +++ cogl/driver/gl/cogl-context-driver.c | 39 -- cogl/driver/gl/cogl-context-driver.h | 53 --- cogl/driver/gl/cogl-feature-functions-gl.h | 410 +++++++++++++++++++ cogl/driver/gl/cogl-feature-functions.h | 410 ------------------- cogl/driver/gl/cogl-gl.c | 237 +++++++++++ cogl/driver/gl/cogl-program-gl.c | 488 ++++++++++++++++++++++ cogl/driver/gl/cogl-program-gl.h | 46 ++ cogl/driver/gl/cogl-program.c | 488 ---------------------- cogl/driver/gl/cogl-program.h | 46 -- cogl/driver/gl/cogl-texture-driver-gl.c | 522 ++++++++++++++++++++++++ cogl/driver/gl/cogl-texture-driver.c | 522 ------------------------ cogl/driver/gl/cogl.c | 237 ----------- cogl/driver/gles/Makefile.am | 57 --- cogl/driver/gles/cogl-context-driver-gles.c | 46 ++ cogl/driver/gles/cogl-context-driver-gles.h | 56 +++ cogl/driver/gles/cogl-context-driver.c | 46 -- cogl/driver/gles/cogl-context-driver.h | 56 --- cogl/driver/gles/cogl-feature-functions-gles.h | 111 +++++ cogl/driver/gles/cogl-feature-functions.h | 111 ----- cogl/driver/gles/cogl-gles.c | 117 ++++++ cogl/driver/gles/cogl-gles2-wrapper.c | 1 - cogl/driver/gles/cogl-gles2-wrapper.h | 2 +- cogl/driver/gles/cogl-program-gles.c | 437 ++++++++++++++++++++ cogl/driver/gles/cogl-program-gles.h | 52 +++ cogl/driver/gles/cogl-program.c | 437 -------------------- cogl/driver/gles/cogl-program.h | 52 --- cogl/driver/gles/cogl-texture-driver-gles.c | 504 +++++++++++++++++++++++ cogl/driver/gles/cogl-texture-driver.c | 504 ----------------------- cogl/driver/gles/cogl.c | 117 ------ cogl/driver/gles/stringify.sh | 94 ----- 39 files changed, 3248 insertions(+), 3357 deletions(-) commit 14dbe81deb8c9d583c8c56e4ede45a46880c2a76 Author: Robert Bragg Date: Thu Sep 23 22:18:42 2010 +0100 material: Don't prune ancestry if it owns some layers Each time a material property changes we look to see if any of its ancestry has become redundant and if so we prune that redundant ancestry. There was a problem with the logic that handles this though because we weren't considering that a material which is a layer state authority may still defer to ancestors to define the state of individual layers. For example a material that derives from a parent with 5 layers can become a STATE_LAYERS authority by simply changing it's ->n_layers count to 4 and in that case it can still defer to its ancestors to define the state of those 4 layers. This patch checks first if a material is a layer state authority and if so only tries to prune its ancestry if it also *owns* all the individual layers it depends on. (I.e. if g_list_length (material->layer_differences) != material->n_layers then it's not safe to try pruning its ancestry!) http://bugzilla-attachments.gnome.org/attachment.cgi?id=170907 cogl/cogl-material.c | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+), 0 deletions(-) commit 256f83973c836bf68ae54a4ed4a8967f4fede5ca Author: Jammy Zhou Date: Tue Sep 21 11:37:52 2010 +0800 cogl-framebuffer.c: GL_DEPTH_STENCIL not supported in gles There is GL_INVALID_ENUM error for GL_DEPTH_STENCIL when call glRenderbufferStorage() with OpenGL ES backend. So enable this only for OpenGL backend. Signed-off-by: Robert Bragg cogl/cogl-framebuffer.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 8150292879625eacc3d36273eeaa56fadbb3a43d Author: Robert Bragg Date: Thu Sep 23 15:45:27 2010 +0100 docs: Put deprecated Cogl symbols into new section This adds a "Cogl deprecated API" chapter to the Cogl reference manual so we can group all the documentation for deprecated symbols together instead of having them clutter up the documentation of symbols we would rather developers used. doc/reference/cogl/cogl-docs.xml.in | 28 ++++++++++ doc/reference/cogl/cogl-sections.txt | 99 +++++++++++++++++++++++----------- 2 files changed, 96 insertions(+), 31 deletions(-) commit d9d0b7881172dbe16d4c0703cdb2e9ae9f94a16d Author: Robert Bragg Date: Wed Aug 25 22:31:30 2010 +0100 docs: update the overview paragraph for Cogl Instead of describing OpenGL as "a low level OpenGL abstraction library" it is now summarised as "modern 3D graphics API". doc/reference/cogl/cogl-docs.xml.in | 12 +++++++----- 1 files changed, 7 insertions(+), 5 deletions(-) commit fb05fe795808fac47c0ba35a8c1fe0706f359d7e Author: Robert Bragg Date: Wed Aug 25 20:36:20 2010 +0100 docs: cogl-texture-3d wasn't listed as experimental The CoglTexture3D API is only available when defining COGL_ENABLE_EXPERIMENTAL_API so it should be listed in the experimental section of the API reference. doc/reference/cogl/cogl-docs.xml.in | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit e5e892fe47ee727df10330d32d9bd4569068e70a Author: Robert Bragg Date: Wed Aug 25 20:33:27 2010 +0100 docs: Use "Cogl" not "COGL" in Cogl API reference Cogl isn't an acronym so we should use "Cogl" instead of "COGL" in our documentation. doc/reference/cogl/cogl-docs.xml.in | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-) commit 6f0f964e12f61e1afd34330988a7decee20e2e17 Merge: ab78575 c8f8352 Author: Emmanuele Bassi Date: Mon Sep 20 14:33:26 2010 +0100 Merge branch 'cookbook-layouts-bind-constraint' * cookbook-layouts-bind-constraint: cookbook: Add recipe about sync'ing actor sizes cookbook: Example using allocation-changed to sync actor size cookbook: Simple example to demonstrate bind constraint cookbook: Example of using a bind constraint for an overlay commit ab78575823dbac0c1f9783425f7f08ada7aa5292 Author: Emmanuele Bassi Date: Mon Sep 20 13:15:44 2010 +0100 docs: API reference fixes cogl/cogl-path.h | 2 ++ cogl/winsys/cogl-texture-pixmap-x11.h | 18 +++++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) commit 0b2985ad66f7a5a3f7db2b7fc7f3b554ee1037a4 Author: Neil Roberts Date: Fri Sep 17 17:18:09 2010 +0100 cogl-object-private.h: Include cogl-debug.h If COGL_OBJECT_DEBUG is defined then cogl-object-private.h will call COGL_NOTE in the ref and unref macros. For this to work the debug header needs to also be included or COGL_NOTE won't necessarily be defined. cogl/cogl-object-private.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit c8f83525ce204e7006ea2d8fa1e9d6530ea5077d Author: Emmanuele Bassi Date: Wed Sep 15 15:56:42 2010 +0100 build: Add cogl-debug-options.h cogl/Makefile.am | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 583d5cc79f2a00ac6e9ac93253f9cfdb528830a2 Author: Neil Roberts Date: Wed Sep 15 14:39:05 2010 +0100 cogl: Make cogl_util_next_p2 internal and fix the documentation cogl_util_next_p2 is declared in cogl-util.h which is a private header so it shouldn't be possible for an application to use it. It's probably not a function we'd like to export from Cogl so it seems better to keep it private. This patch renames it to _cogl_util_next_p2 so that it won't be exported from the shared library. The documentation for the function is also slightly wrong because it stated that the function returned the next power greater than 'a'. However the code would actually return 'a' if it's already a power of two. I think the actual behaviour is more useful so this patch changes the documentation rather than the code. cogl/cogl-texture-2d-sliced.c | 4 ++-- cogl/cogl-util.c | 11 ++++++----- cogl/cogl-util.h | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) commit a433bd8e9e732016e03ced0bc7ab57ee44c54620 Author: Neil Roberts Date: Wed Sep 15 14:07:30 2010 +0100 cogl-vertex-buffer: Don't always set COGL_MATERIAL_FLUSH_FALLBACK_MASK Previously CoglVertexBuffer would always set the flush options flags to at least contain COGL_MATERIAL_FLUSH_FALLBACK_MASK. The code then later checks whether any flags are set before deciding whether to copy the material to implement the overrides. This means that it would always end up copying the material even if there are no fallback layers. This patch changes it so that it only sets COGL_MATERIAL_FLUSH_FALLBACK_MASK if fallback_layers != 0. cogl/cogl-vertex-buffer.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) commit 91b46890f776171afcfa6187b3dcfbe13d353214 Author: Robert Bragg Date: Tue Sep 14 20:25:23 2010 +0100 material-arbfp: fix updating params if sharing progs If a single arbfp program is being shared between multiple CoglMaterials then we need to make sure we update all program.local params when switching between materials. Previously we had a dirty flag to track when combine_constant params were changed but didn't take in to account that different materials sharing the same program may have different combine constants. cogl/cogl-material-arbfp.c | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-) commit cad5624a2a236242ad4b038346ad36b2f2af8e4b Author: Robert Bragg Date: Tue Sep 14 18:50:50 2010 +0100 material-arbfp: Another pass at simplifying the code Previously the backend private state was used to either link to an authority material or provide authoritative program state. The mechanism seemed overly complex and felt very fragile. I made a recent comment which added a lot of documentation to make it easier to understand but still it didn't feel very elegant. This patch takes a slightly different approach; we now have a ref-counted ArbfpProgramState object which encapsulates a single ARBfp program and the backend private state now just has a single member which is a pointer to one of these arbfp_program_state objects. We no longer need to cache pointers to our arbfp-authority and so we can get rid of a lot of awkward code that ensured these pointers were updated/invalidated at the right times. The program state objects are not tightly bound to a material so it will also allow us to later implement a cache mechanism that lets us share state outside a materials ancestry. This may help to optimize code not following the recommendations of deriving materials from templates, avoiding one-shot materials and not repeatedly modifying materials because even if a material's ancestry doesn't naturally lead us to shareable state we can fallback to searching for shareable state using central hash tables. cogl/cogl-material-arbfp.c | 600 +++++++++++++++++++------------------------- 1 files changed, 256 insertions(+), 344 deletions(-) commit 16c64054b941b1508d0f904ff61582e01912a06b Author: Robert Bragg Date: Mon Jul 5 21:33:26 2010 +0100 material: Adds experimental cogl_material_foreach_layer API This adds a way to iterate the layer indices of the given material since cogl_material_get_layers has been deprecated. The user provides a callback to be called once for each layer. Because modification of layers in the callback may potentially invalidate any number of the internal CoglMaterialLayer structures and invalidate the material's layer cache this should be more robust than cogl_material_get_layers() which used to return a const GList * pointing directly to internal state. cogl/cogl-material-arbfp.c | 12 ++-- cogl/cogl-material-opengl.c | 18 ++++---- cogl/cogl-material-private.h | 10 ++-- cogl/cogl-material.c | 108 +++++++++++++++++++++++++++++------------ cogl/cogl-material.h | 33 +++++++++++++ 5 files changed, 129 insertions(+), 52 deletions(-) commit 7eff623b96a3bec083b9355d4e66217ec0fc9de7 Author: Robert Bragg Date: Tue Sep 14 12:13:30 2010 +0100 material: don't declare backend vtables in headers This fixes the material backends to declare their constant vtable in the c file with a corresponding extern declaration in the header. This should fix complaints about duplicate symbols seen on OSX. cogl/cogl-material-arbfp-private.h | 2 +- cogl/cogl-material-arbfp.c | 2 ++ cogl/cogl-material-fixed-private.h | 2 +- cogl/cogl-material-fixed.c | 2 ++ cogl/cogl-material-glsl-private.h | 2 +- cogl/cogl-material-glsl.c | 2 ++ 6 files changed, 9 insertions(+), 3 deletions(-) commit 56a382a50724f47b1a2cd9bcd7fbad4b8ae69623 Author: Robert Bragg Date: Tue Sep 14 00:33:46 2010 +0100 material-arbfp: don't recompile for constant changes Instead of lazily incorporating combine constants as arbfp PARAM constants in the source directly we now use program.local parameters instead so we can avoid repeating codegen if a material's combine constant is updated. This should be a big win for applications animating a constant used for example in an animated interpolation, such as gnome-shell. http://bugzilla.clutter-project.org/show_bug.cgi?id=2280 cogl/cogl-material-arbfp.c | 68 +++++++++++++++++++++++++++++--------------- 1 files changed, 45 insertions(+), 23 deletions(-) commit 17538cf5e622fd8dd134883d3aa344770e0720ff Author: Robert Bragg Date: Tue Sep 14 00:27:57 2010 +0100 material-arbfp: don't redo codegen for texture changes This makes it so we don't consider LAYER_STATE_TEXTURE changes to affect the arbfp code. This should avoid a lot of unneeded passes of code generation for applications modifying the texture for a layer. cogl/cogl-material-arbfp.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-) commit 0717eb9f6b0acae8a7914f71ceeb1b5789d831f6 Author: Robert Bragg Date: Tue Sep 14 00:18:02 2010 +0100 material: make layer/material_pre_changes mutually exclusive This makes it so we only notify backends of either a single material change or a single layer change. Previously all material STATE_LAYERS changes would be followed by a more detailed layer change. For backends that perform code generation for fragment processing they typically need to understand the details of how layers get changed to determine if they need to repeat codegen. It doesn't help them to report a material STATE_LAYERS change for all layer changes since it's so broad, they really need to wait for the layer change to be notified. What does help though is to report a STATE_LAYERS change for a change in material->n_layers because they typically do need to repeat codegen in that case. cogl/cogl-material-arbfp.c | 7 +++++++ cogl/cogl-material.c | 22 +++++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletions(-) commit 95fbe5fb0d243029f4cfd820386a8c0d7b9889ff Author: Robert Bragg Date: Mon Sep 13 23:52:18 2010 +0100 material-arbfp: fixes for how we track private state This fixes a number of issues relating to how we track the arbfp private state associated with CoglMaterials. At the same time it adds much more extensive code documentation to try and make it a bit more approachable. cogl/cogl-material-arbfp.c | 175 ++++++++++++++++++++++++++++++++++++-------- 1 files changed, 143 insertions(+), 32 deletions(-) commit 0e99fa7a1e0191328b0616b5a901fb1ab14dd1fb Author: Robert Bragg Date: Mon Sep 13 23:05:49 2010 +0100 material: pass material owner for layer pre changes When notifying a backend about a layer being modified we now pass the layers current owner for reference. NB: Although a layer can indirectly be referenced by multiple layers, a layer is considered immutable once it has dependants, so there is only ever one material associated with a layer being modified. Passing the material pointer to the backends layer_pre_change callback can be useful for backends that associate their private state with materials and may need to update that state in response to layer changes. cogl/cogl-material-arbfp.c | 11 ++++++++++- cogl/cogl-material-private.h | 3 ++- cogl/cogl-material.c | 7 ++++--- 3 files changed, 16 insertions(+), 5 deletions(-) commit 8f63ca6ffc95a8b4e3f5190114301d06fecea857 Author: Robert Bragg Date: Mon Sep 13 22:56:44 2010 +0100 arbfp: rename get_arbfp_authority clarifying semantics This renames the get_arbfp_authority function to get_arbfp_authority_no_check to clarify that the function doesn't validate that the authority cache is still valid by looking at the age of the referenced material. The function should only be used when we *know* the cache has already been checked. cogl/cogl-material-arbfp.c | 16 ++++++++++------ 1 files changed, 10 insertions(+), 6 deletions(-) commit 3a2a10d2e8edddb2324e60fa5fefac5a1c2fa07e Author: Robert Bragg Date: Mon Sep 13 21:26:31 2010 +0100 material: track if material change is layer change We now pass a boolean to _cogl_material_pre_change_notify to know when a material change is as a result of a layer change. We plan to use this information to avoid notifying the backends about material changes if they are as a result of layer changes. This will simplify the handling of state changes in the backends because they can assume that layer and material changes are mutually exclusive. cogl/cogl-material.c | 52 +++++++++++++++++++++++++++---------------------- 1 files changed, 29 insertions(+), 23 deletions(-) commit bc187dc31e18c008103b20deaf7283d07c1711bb Author: Robert Bragg Date: Mon Sep 13 21:21:09 2010 +0100 material: Adds _get_layer_combine_constant API This adds an internal _cogl_material_get_layer_combine_constant function so we can query the current layer combine constant back. We should probably make this a public property getter, but for now we just need this so we can read the constant in the arbfp backend. cogl/cogl-material-private.h | 5 +++++ cogl/cogl-material.c | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 0 deletions(-) commit c9ac838fad48040c3d37e3bcebeedb608109f5fd Author: Robert Bragg Date: Mon Sep 13 21:17:30 2010 +0100 material: track unit state with arbfp private state We are going to start tracking more per-texture unit state with arbfp private state so this adds an internal UnitState type and we allocate an array of these when setting up a new private state structure. The first thing that has been moved into this is the sampled boolean to know when a particular texture unit gets sampled from in the generated arbfp code. cogl/cogl-material-arbfp.c | 36 +++++++++++++++++++++++++++--------- 1 files changed, 27 insertions(+), 9 deletions(-) commit 71f62ca5000064d22944ff2d8f4398489dc75842 Author: Emmanuele Bassi Date: Wed Sep 15 11:56:59 2010 +0100 Enumeration value should be on the same line The glib-mkenums script is not clever enough to deal with FLAGS_VALUE = FLAGS_A | FLAGS_B And since this breaks the enumeration GType and the introspection data, we cannot really wait for it to be fixed. See: https://bugzilla.gnome.org/show_bug.cgi?id=629741 http://bugzilla.clutter-project.org/show_bug.cgi?id=2238 cogl/cogl-buffer.h | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit 33a64408121d1030d7dfdd5515f9d786ff858dae Author: Robert Bragg Date: Wed Sep 1 15:15:20 2010 +0100 cogl-framebuffer: fix leak when popping framebuffer We were using g_slist_remove_link instead of g_slist_delete_link resulting in a memory leak. Thanks to Simon Lanzmich for reporting this bug. cogl/cogl-framebuffer.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit eabce897dc05e227e7039cc4ce6bc4938f58852b Author: Robert Bragg Date: Mon Aug 16 21:11:42 2010 +0100 Initialize the cogl uprof state in cogl_create_context This avoids the use of of gcc constructor and destructor attributes to initialize the cogl uprof context and optionally print a cogl uprof report at app exit. We now initialize the uprof context in cogl_context_create instead. cogl/cogl-context.c | 17 +++++++++++++++++ cogl/cogl-profile.c | 30 ++++++++++++++++-------------- cogl/cogl-profile.h | 3 +++ 3 files changed, 36 insertions(+), 14 deletions(-) commit d1ac02594f7985bdb7f4b215a59f54c51f2624bc Author: Robert Bragg Date: Mon Jul 26 15:21:18 2010 +0100 journal: provide more detailed uprof instrumentation This adds more timing around key stages of the journal flushing process. cogl/cogl-journal.c | 39 +++++++++++++++++++++++++++++++++++++++ cogl/cogl-material.c | 40 ++++++++++++++++++++++++++++------------ 2 files changed, 67 insertions(+), 12 deletions(-) commit 9d4ad1584d32a61ec6879601bc320fd79e2efb1e Author: Robert Bragg Date: Mon Jun 21 15:36:46 2010 +0100 profile: Update to uprof-0.3 dep for --enable-profile When building with --enable-profile we now depend on the uprof-0.3 developer release which brings a few improvements: » It lets us "fix" how we initialize uprof so that instead of using a shared object constructor/destructor (which was a hack used when first adding uprof support to Clutter) we can now initialize as part of clutter's normal initialization code. As a side note though, I found that the way Clutter initializes has some quite serious problems whenever it involves GOptionGroups. It is not able to guarantee the initialization of dependencies like uprof and Cogl. For this reason we still use the contructor/destructor approach to initialize uprof in Cogl. » uprof-0.3 provides a better API for adding custom columns when reporting timer and counter statistics which lets us remove quite a lot of manual report generation code in clutter-profile.c. » uprof-0.3 provides a shared context for tracking mainloop timer statistics. This means any mainloop based library following the same "Mainloop" timer naming convention can use the shared context and no matter who ends up owning the final mainloop the statistics will always be in the same place. This allows profiling of Clutter with an external mainloop such as with the Mutter compositor. » uprof-0.3 can export statistics over dbus and comes with an ncurses based ui to vizualize timer and counter stats live. The latest version of uprof can be cloned from: git://github.com/rib/UProf.git cogl/cogl-debug-options.h | 145 +++++++++++++++++++++++++++++++++++++++++++++ cogl/cogl-debug.c | 37 ++--------- cogl/cogl-debug.h | 18 +++--- cogl/cogl-profile.c | 48 +++++++++++++++ cogl/cogl-profile.h | 4 + cogl/cogl-texture-3d.c | 1 + 6 files changed, 215 insertions(+), 38 deletions(-) commit 4628d28172b2ec1cb6ef160d11f05863bcd5bd50 Author: Neil Roberts Date: Mon Sep 6 17:18:11 2010 +0100 cogl-framebuffer: Clear the renderbuffer list on failure When try_creating_fbo fails it deletes any intermediate render buffers that were created. However it doesn't clear the list so I think if it failed a second time it would try to delete the render buffers again. This could potentially cause problems if a subsequent fbo is created because the destructor for the original might delete the renderbuffers of the new fbo. cogl/cogl-framebuffer.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit e333a3645ce5ae5eacf395fea03ab300c89d9fae Merge: 6a48065 bc4be1c Author: Emmanuele Bassi Date: Mon Sep 13 15:51:18 2010 +0100 Merge remote branch 'elliot/cookbook-animations-reuse' * elliot/cookbook-animations-reuse: cookbook: Added a recipe for reusing a complex animation cookbook: Added id for section in "rotating an actor" recipe cookbook: Simplified and clarified example code cookbook: Cleaned up the "animations reuse" example cookbook: Refactored reusable animation example cookbook: Added example for animation reuse recipe commit 6a48065761c7448d71a05973610ce3a3d31fa166 Author: Murray Cumming Date: Mon Sep 13 16:16:25 2010 +0200 Remove trailin enum commas, avoiding C++ warnings. http://bugzilla.clutter-project.org/show_bug.cgi?id=2314 cogl/cogl-types.h | 2 +- cogl/cogl-vertex-buffer.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit bc4be1c673f345e5c9c8b81ead89d2b4fe0b6351 Author: Emmanuele Bassi Date: Mon Sep 13 11:31:46 2010 +0100 build: Add tesselator to the include paths cogl/Makefile.am | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit a8560037917550fdce83f2ae3b6f15c03812266c Author: Emmanuele Bassi Date: Mon Sep 13 02:01:21 2010 +0100 build: Remove gir files from dist The introspection data is going to be generated, so it should never be in the dist. cogl/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 8f049b360ad78f84688d76fd3ae04922ae5c4df3 Author: Emmanuele Bassi Date: Sun Sep 12 19:25:47 2010 +0100 build: Do not build a noinst library for the tesselator Let's try to keep Cogl's build as non-recursive as possible, in the hope that one day we'll be able to make it fully non-recursive along with the rest of Clutter. cogl/Makefile.am | 59 ++++++++++++++++++++++++++++++++++++------ cogl/tesselator/Makefile.am | 41 ----------------------------- 2 files changed, 50 insertions(+), 50 deletions(-) commit ecbdbb666bd8c161d4ac0e576ed3f875fa99409f Author: Neil Roberts Date: Thu Sep 9 12:15:59 2010 +0100 cogl-vertex-buffer: Flush the framebuffer state first Flushing the framebuffer state can cause some drawing to occur if the framebuffer has a clip stack which needs the stencil buffer. This was causing the array pointers set up by enable_state_for_drawing_buffer to get mangled so it would crash when it hits glDrawArrays. This patch moves the framebuffer state flush to before it sets up the array pointers. http://bugzilla.clutter-project.org/show_bug.cgi?id=2297 cogl/cogl-vertex-buffer.c | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-) commit 58827bb54c02f4f913ac131ceeab72d6a1bb0415 Author: Emmanuele Bassi Date: Mon Sep 6 18:07:07 2010 +0100 material: Check before unreferencing a texture When disposing a material layer of type 'texture' we should check that the texture handle is still valid before calling cogl_handle_unref(). This avoids an assertion failure when disposing a ClutterTexture. cogl/cogl-material.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 6b5934a18e76d6f33002586500bfb08a8ef78431 Author: Emmanuele Bassi Date: Mon Sep 6 16:11:46 2010 +0100 Add some more introspection annotations cogl/cogl-material.h | 2 +- cogl/cogl-offscreen.h | 11 ++++++----- cogl/cogl-types.h | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) commit fd0cd2e55cbf9eabf7dea23d2bac0a388369b5ca Author: Emmanuele Bassi Date: Fri Sep 3 17:15:22 2010 +0100 docs: Fix up the Cogl API reference build doc/reference/cogl/Makefile.am | 41 ++++++++++++++++++++-------------- doc/reference/cogl/cogl-docs.xml.in | 2 +- 2 files changed, 25 insertions(+), 18 deletions(-) commit ec3068f2268a26dc537bfc040dbd7f60438ab565 Author: Emmanuele Bassi Date: Fri Sep 3 16:56:12 2010 +0100 cogl-shader: Add deprecation guards for cogl_program_uniform_* cogl/cogl-shader.h | 14 +++++++++----- 1 files changed, 9 insertions(+), 5 deletions(-) commit 73a94a7a79292c5d900832f9b4068c20995278c7 Author: Emmanuele Bassi Date: Fri Sep 3 16:55:12 2010 +0100 Replace cogl_color_set_from_* with cogl_color_init_from_* The former is not yet "officially" deprecated by the latter, but it's confusing to have them both in the code base. cogl/cogl-material.c | 4 ++-- cogl/cogl.c | 6 +++--- pango/cogl-pango-display-list.c | 10 +++++----- pango/cogl-pango-render.c | 10 +++++----- 4 files changed, 15 insertions(+), 15 deletions(-) commit e950d2feec2d9c3830ffa8b0465b32739c9c6ce4 Author: Emmanuele Bassi Date: Fri Sep 3 16:52:06 2010 +0100 docs: Add annotation glossary to the Cogl API reference It's the only way to let gtk-doc know that we're using annotations in the comments. doc/reference/cogl/cogl-docs.xml.in | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit b12f688415d5f8854abfc676db604585825034d3 Author: Emmanuele Bassi Date: Fri Sep 3 16:10:44 2010 +0100 docs: Fixes for gtk-doc cogl/cogl-matrix.h | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 08eb738c9387f524c50a84004618f6dfb01c4487 Author: Emmanuele Bassi Date: Fri Sep 3 11:09:57 2010 +0100 build: Use Makefile.introspection Whenever possible, instead of writing our own rules for generating GIR files and typelibs. cogl/Makefile.am | 36 ++++++++++++++++++------------------ 1 files changed, 18 insertions(+), 18 deletions(-) commit d4d899fa278efff9e7d4730527d12703f9d39dc5 Author: Colin Walters Date: Thu Sep 2 11:45:42 2010 -0400 introspection: Build fixes This patch merges in substantial work from Emmanuele Bassi * Use new introspection --include-uninstalled API since we don't want to try to find the clutter-1.0.pc file before it's installed. * Use --pkg-export for Clutter-1.0.gir, since we want the .gir file to contain the associated pkg-config file. * Drop the use of --pkg for dependencies; those come from the associated .gir files. (Actually, --pkg is almost never needed) * Add --quiet http://bugzilla.clutter-project.org/show_bug.cgi?id=2292 cogl/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 7e158c6bc5dc611417a9db4e005fcd80b0deeb45 Author: Damien Lespiau Date: Thu Aug 12 09:25:17 2010 -0400 cex100: Add a Clutter EGL backend for CE3100/CE4100 SoCs Intel CE3100 and CE4100 SoCs are designed for TVs. They have separate framebuffers that are blended together by a piece of hardware to make the final output. The library that allows you to initialize and configure those planes is called GDL. A EGL GDL winsys can then be use with those planes as NativeWindowType to select which plane to use. This patch adds a new ClutterBackendCex100 backend that can be selected at compile time with the new --with-flavour=cex100 option. cogl/Makefile.am | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 7367188ab5f6c7f3824443f83646985444df2d00 Author: Damien Lespiau Date: Thu Aug 12 09:05:01 2010 -0400 egl: Fix compilation for EGL native Some minor fixes here and there: missing include, wrongly placed #endif, unused variable warning fixes, missing #ifdef. Make ClutterStageEGL a subclass of either ClutterStageX11 or GObject depending if you compile with X11 support (EGLX) or not (native). cogl/cogl-material-glsl.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit a77e14c96935663cc065fdf4b4a82c6078e2d8d4 Author: Emmanuele Bassi Date: Sat Aug 28 21:21:08 2010 +0100 docs: Pass -DCOGL_ENABLE_EXPERIMENTAL_API when scanning doc/reference/cogl/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit bed08767493672552e6d1a47e6866a26994edc78 Author: Emmanuele Bassi Date: Fri Aug 20 15:24:42 2010 +0100 Merge remote branch 'elliot/cookbook-textures-crossfade' * elliot/cookbook-textures-crossfade: cookbook: Use GdkPixbuf instead of getting data from a texture cookbook: Added a recipe for cross-fading between two images cookbook: Modified COGL example for consistency cookbook: Added video of two texture cross-fade cookbook: Removed unused constant cookbook: Renamed front/back to top/bottom in cross-fade example cookbook: Don't need to set keep-aspect-ratio for simple example cookbook: Modified ordering of statements in cross-fade example cookbook: Added a longer slideshow example cookbook: Made code examples more consistent cookbook: Added example code for texture cross-fading Post-release version bump to 1.3.13 Release Clutter 1.3.12 (developers snapshot) Conflicts: doc/cookbook/examples/Makefile.am commit 90f633dd8d9d5b1e357e513b8e53affd0c0d993b Author: Robert Bragg Date: Mon Aug 9 16:01:17 2010 +0100 material: Implements weak materials Weak materials are ones that don't take a reference on their parent and they are associated with a callback that notifies when the material is destroyed, because its parent was freed or modified. More details can be found at: http://wiki.clutter-project.org/wiki/CoglDesign/CoglMaterial For now the concept is internal only but the plan is to make this public at some point once we have tested the design internally. cogl/cogl-material-private.h | 142 +++++++++++++++++++++++++++++++ cogl/cogl-material.c | 191 ++++++++++++++++++++++++++++++++++-------- 2 files changed, 297 insertions(+), 36 deletions(-) commit 65c2caea65ed79b41c8f8965d6bf6c47252742a4 Merge: 63fd426 8b8dd92 Author: Emmanuele Bassi Date: Thu Aug 12 18:29:08 2010 +0100 Merge remote branch 'elliot/cookbook-events-mouse-scroll' * elliot/cookbook-events-mouse-scroll: cookbook: Cleaning up grammar and wording in mouse scroll recipe cookbook: Added more explanation about setting y coord on scrollable cookbook: Mentioned the animation in the sample code cookbook: Included video of the scroll example running cookbook: Made stage slightly smaller for scroll event example cookbook: Added video showing scrollable actor cookbook: Added walk through of code example for mouse scroll cookbook: Fixed link to example in mouse scroll recipe cookbook: Simplified full scroll example cookbook: Improved wording and formatting in mouse scroll intro. cookbook: Handle all possible mouse scroll directions cookbook: Build mouse scroll example with cookbook cookbook: Cleaned up redundant comments in code example cookbook: Added xmlns for XInclude to events docbook file cookbook: Added basic mouse scroll recipe commit 63fd426b4b4751810895b5343e8aaa36f92e2a98 Author: Robert Bragg Date: Thu Aug 12 10:43:22 2010 +0100 cogl-shader: get_info_log should always use strdup In the case where there is no error log for arbfp we were returning a "" string literal. The other paths were using g_strdup to return a string that could be freed with g_free. This makes the arbfp path return g_strdup ("") instead. cogl/cogl-shader.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit a0247f294ddcc02ba589f7ea9afe6d1f4f7b0c1a Author: Robert Bragg Date: Thu Aug 12 10:40:39 2010 +0100 cogl-shader: correctly #ifdef guard an if else block There are quite a few if {} else {} blocks for dealing with arbfp else glsl and the first block is guarded with #ifdef HAVE_COGL_GL. In this case though the #endif was before the else so it wouldn't compile for gles. cogl/cogl-shader.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 13e72608682b2632b0cb0c523d001a2c643064f6 Author: Robert Bragg Date: Thu Aug 12 10:37:55 2010 +0100 material-glsl: #include "cogl-shader-private.h" We need to include cogl-shader-private.h to have the COGL_SHADER_TYPE_GLSL define. When building for opengl this wasn't noticed probably because some other header indirectly includes this file. It was a problem when building for gles2 though. cogl/cogl-material-glsl.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 8d80a88e148419c0b2be9a7cdea6c6638d3f921e Author: Robert Bragg Date: Wed Aug 11 19:18:14 2010 +0100 cogl-program: Adds use_uniform_xyz methods Instead of exposing an API that provides an OpenGL state machine style where you first have to bind the program to the context using cogl_program_use() followed by updating uniforms using cogl_program_uniform_xyz we now have uniform setter methods that take an explicit CoglHandle for the program. This deprecates cogl_program_use and all the cogl_program_uniform variants and provides the following replacements: cogl_program_set_uniform_1i cogl_program_set_uniform_1f cogl_program_set_uniform_int cogl_program_set_uniform_float cogl_program_set_uniform_matrix cogl/cogl-shader.h | 119 +++++++++++++++++++++++++- cogl/driver/gl/cogl-program.c | 157 ++++++++++++++++++++++------------ cogl/driver/gles/cogl-program.c | 127 ++++++++++++++++++++------- doc/reference/cogl/cogl-sections.txt | 5 + 4 files changed, 316 insertions(+), 92 deletions(-) commit 64b5308d7fe2d80ae4d6ae4e04b7150ae76dec7e Author: Damien Lespiau Date: Thu Aug 12 10:36:04 2010 -0400 introspection: Use the --quiet flag conditionally --quiet has been added to g-ir-scanner in the 0.9.1 cycle. We really want to be able to compile clutter with 0.6.14 to be able to reuse gir files that are distributed in current distributions. Use the INTROSPECTION_SCANNER_ARGS (previously unused) variable to convey --quiet when necessary. Fixes: http://bugzilla.clutter-project.org/show_bug.cgi?id=2265 cogl/Makefile.am | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit 717cb2c47f6ad511c0b374975e66d5cb171d558c Author: Neil Roberts Date: Thu Aug 12 09:59:58 2010 +0100 cogl-atlas: Verify that the chosen initial size is supported CoglAtlas chooses a fairly large default initial size of either 512x512 or 1024x1024 depending on the texture format. There is a chance that this size will not be supported on some platforms which would be catastrophic for the glyph cache because it would mean that it would always fail to put any glyphs in the cache so text wouldn't work. To fix this the atlas code now checks whether the chosen initial size is supported by the texture driver and if not it will get halved until it is supported. cogl/cogl-atlas.c | 56 ++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 39 insertions(+), 17 deletions(-) commit b4240cba29e63652bc9d43138e554672e1b50e5a Author: Neil Roberts Date: Thu Aug 12 09:08:30 2010 +0100 cogl-atlas: Use _cogl_texture_driver_size_supported Previously when creating a new rectangle map it would try increasingly larger texture sizes until GL_MAX_TEXTURE_SIZE is reached. This is bad because it queries state which should really be owned by the texture driver. Also GL_MAX_TEXTURE_SIZE is often a conservative estimate so larger texture sizes can be used if the proxy texture is queried instead. cogl/cogl-atlas.c | 25 +++++++++++++++---------- 1 files changed, 15 insertions(+), 10 deletions(-) commit 1e72ba49326f3388077a8a6a5fd02aa5b9f1f4eb Author: Neil Roberts Date: Wed Aug 11 15:08:00 2010 +0100 cogl-rectangle-map: Record largest gap rather than the remaining space Previously each node in the rectangle map tree would store the total remaining space in all of its children to use as an optimization when adding nodes. With this it could skip an entire branch of the tree if it knew there could never be enough space for the new node in the branch. This modifies that slightly to instead store the largest single gap. This allows it to skip a branch earlier because often there would be a lot of small gaps which would add up to enough a space for the new rectangle, but the space can't be used unless it is in a single node. The rectangle map still needs to keep track of the total remaining space for the whole map for the debugging output so this has been added back in to the CoglRectangleMap struct. There is a separate debugging function to verify this value. cogl/cogl-rectangle-map.c | 94 ++++++++++++++++++++++++++++++++------------ 1 files changed, 68 insertions(+), 26 deletions(-) commit 0aaea4a93aac5eab6be13c277c17b414de092a68 Author: Neil Roberts Date: Fri Aug 6 18:42:43 2010 +0100 cogl-atlas: Try the next size when there would be less than 6% waste Previously when the atlas needs to be migrated it would start by trying with the same size as the existing atlas if there is enough space for the new texture. However even if the atlas is completely sorted there will always be some amount of waste so when the atlas needs to grow it would usually end up redundantly trying the same size when it is very unlikely to fit. This patch changes it so that there must be at least 6% waste available after the new texture is added otherwise it will start with the next atlas size. cogl/cogl-atlas.c | 12 +++++++----- 1 files changed, 7 insertions(+), 5 deletions(-) commit c6b6f619a92da88b42547bafb283b5a087e05d0c Author: Neil Roberts Date: Fri Aug 6 18:42:01 2010 +0100 cogl-atlas: Add some more debugging notes This adds some debugging notes which report when the atlas is trying various sizes. cogl/cogl-atlas.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) commit 74b64848125f2a027f044b7387eb9c1b451d4708 Author: Neil Roberts Date: Fri Aug 6 17:40:52 2010 +0100 cogl-rectangle-map: Use a GArray for the stack When iterating over the rectangle map a stack is used to implement a recursive algorithm. Previously this was slice allocating a linked list. Now it uses a GArray which is retained with the rectangle map to avoid frequent allocations which is a little bit faster. cogl/cogl-rectangle-map.c | 120 +++++++++++++++++++++++++-------------------- 1 files changed, 67 insertions(+), 53 deletions(-) commit 9a62c069aa4d748c94ea9d364738dad26466671b Author: Neil Roberts Date: Fri Aug 6 16:13:20 2010 +0100 cogl-rectangle-map: Store the remaining space per node Previously the remaining space was managed as part of the CoglRectangleMap struct. Now it is stored per node so that at any point in the hierarchy we can quickly determine how much space is remaining in all of the node's children. That way when adding a rectangle we can miss out entire branches more quickly if we know that there is no way the new rectangle would fit in that branch. This also adds a function to recursively verify the cached state in the nodes such as the remaining space and the number of rectangles. This function is only called when the dump-atlas-image debug flag is set because it is potentially quite slow. cogl/cogl-rectangle-map.c | 108 ++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 96 insertions(+), 12 deletions(-) commit 92b712f6e478a20d4ef7b853c4d162574dedcf83 Author: Neil Roberts Date: Fri Aug 6 11:44:39 2010 +0100 cogl-atlas: Increase the default minimum texture size When initially creating a texture it would start with a minimum size of 256x256. This increases the size so that it would try to match 1MB of memory. cogl/cogl-atlas.c | 18 +++++++++++++++--- 1 files changed, 15 insertions(+), 3 deletions(-) commit 8123330061319d75291dd55df28e0c7c6a01bedc Author: Neil Roberts Date: Wed Aug 4 18:05:21 2010 +0100 cogl-pango: Use a CoglAtlas to maintain the glyph cache The glyph cache is now stored in a CoglAtlas structure instead of the custom atlasing code. This has the advantage that it can share code with the main texture atlas and that it supports reorganizing the atlas when it becomes full. Unlike the texture atlas, the glyph cache can use multiple atlases which would be neccessary if the maximum texture size is reached and we need to create a second texture. Whenever a display list is created it now has to register a callback with the glyph cache so that the display list can be recreated whenever any of the atlases are reorganized. This is needed because the display list directly stores texture coordinates within the atlas texture and they would become invalid when the texture is moved. The ensure_glyphs_for_layout now works in two steps. First it reserves space in the atlas for all of the glyphs. The atlas is created with the DISABLE_MIGRATION flag so that it won't actually copy any textures if any rearranging is needed. Whenever the position is updated for a glyph then it is marked as dirty. After space for all of the glyphs has been reserved it will iterate over all dirty glyphs and redraw them using Cairo. The rendered glyph is then stored in the texture with a sub texture update. The glyphs need to all be set at the right location before starting to create the display list because the display list stores the texture coordinates of the glyph. If any of the glyphs were moved around then the parts of the display list that was created already would become invalid. To make this work, ensure_glyphs_for_layout is now always called before rendering a layout or a layout line. pango/cogl-pango-glyph-cache.c | 371 ++++++++++++++++++---------------------- pango/cogl-pango-glyph-cache.h | 46 ++++-- pango/cogl-pango-render.c | 226 ++++++++++++++++--------- 3 files changed, 343 insertions(+), 300 deletions(-) commit bbac3243567e89f2468182731fb32480650e56b7 Author: Neil Roberts Date: Thu Aug 5 13:24:02 2010 +0100 cogl-atlas: Support multiple formats and clearing the texture _cogl_atlas_new now has two extra parameters to specify the format of the textures it creates as well as a set of flags to modify the behavious of the atlas. One of the flags causes the new textures to be cleared and the other causes migration to avoid actually copying the textures. This is needed to use CoglAtlas from the pango glyph cache because it needs to use COGL_PIXEL_A_8 and to clear the textures as it does not fill in the gaps between glyphs. It needs to avoid copying the textures so that it can work on GL implementations without FBO support. cogl/cogl-atlas-texture.c | 4 +- cogl/cogl-atlas.c | 96 +++++++++++++++++++++++++++++++++----------- cogl/cogl-atlas.h | 12 +++++- 3 files changed, 86 insertions(+), 26 deletions(-) commit b2f2e6926448473508c829bb270ac43d66005d5d Author: Neil Roberts Date: Mon Aug 2 16:29:10 2010 +0100 cogl-atlas-texture: Split out the atlas data structure Instead of storing a pointer to the CoglRectangleMap and a handle to the atlas texture in the context, there is a now a separate data structure called a CoglAtlas to manage these two. The context just contains a pointer to this. The code to reorganise the atlas has been moved from cogl-atlas-texture.c to cogl-atlas.c cogl/Makefile.am | 2 + cogl/cogl-atlas-texture-private.h | 4 + cogl/cogl-atlas-texture.c | 585 +++++------------------------------- cogl/cogl-atlas.c | 596 +++++++++++++++++++++++++++++++++++++ cogl/cogl-atlas.h | 86 ++++++ cogl/cogl-context.c | 10 +- cogl/cogl-context.h | 5 +- 7 files changed, 774 insertions(+), 514 deletions(-) commit cb114f43ab42087537a7036ef7bd411668eb8065 Author: Neil Roberts Date: Wed Aug 4 17:59:06 2010 +0100 cogl: Add an internal utility to maintain a list of callback functions This adds an internal CoglCallbackList type which is just a GSList of of function pointers along with a data pointer to form a closure. There are functions to add and remove items and to invoke the list of functions. This could be used in a number of places in Cogl. cogl/Makefile.am | 2 + cogl/cogl-callback-list.c | 107 +++++++++++++++++++++++++++++++++++++++++++++ cogl/cogl-callback-list.h | 58 ++++++++++++++++++++++++ 3 files changed, 167 insertions(+), 0 deletions(-) commit bc200105821a7e2d50a9f9bc34edfe354fc5ebfe Author: Neil Roberts Date: Mon Aug 2 15:24:03 2010 +0100 cogl-atlas: Rename to CoglRectangleMap This simply renames CoglAtlas to CoglRectangleMap without making any functional changes. The old 'CoglAtlas' is just a data structure for managing unused areas of a rectangle and it doesn't neccessarily have to be used for an atlas so it wasn't a very good name. cogl/Makefile.am | 4 +- cogl/cogl-atlas-texture-private.h | 12 +- cogl/cogl-atlas-texture.c | 169 ++++++----- cogl/cogl-atlas.c | 598 ------------------------------------ cogl/cogl-atlas.h | 78 ----- cogl/cogl-context.c | 7 +- cogl/cogl-context.h | 4 +- cogl/cogl-rectangle-map.c | 612 +++++++++++++++++++++++++++++++++++++ cogl/cogl-rectangle-map.h | 78 +++++ 9 files changed, 792 insertions(+), 770 deletions(-) commit bb17fd70e25f9f1b42ce3ca17592c9670d441236 Author: Neil Roberts Date: Thu Aug 12 09:11:28 2010 +0100 cogl-material: Compare whether textures are equal by their GL handle Textures within a layer were compared for equality by comparing their texture handle. However this means that sub textures and atlas textures which may be internally using the same GL handle would not be batched together. Instead it now tries to determine the underlying GL handle using either the slice override or _cogl_texture_get_gl_texture and then compares those. cogl/cogl-material.c | 35 ++++++++++++++++++++++++++--------- 1 files changed, 26 insertions(+), 9 deletions(-) commit b7807d99957e568422743a6b7355c9bf52afc950 Author: Neil Roberts Date: Wed May 5 16:45:21 2010 +0100 cogl-atlas-texture: Accept formats with different component orders When filtering on allowed formats for atlas textures, it now masks out the BGR and AFIRST bits in addition to the premult bit. That way it will accept RGB and RGBA formats in any component order. In theory it could also accept luminance and alpha-only textures but I haven't added this because presumably if the application has requested these formats then it has some reason not to use a full RGB or RGBA texture and we should respect that. cogl/cogl-atlas-texture.c | 19 ++++++++++++++++--- 1 files changed, 16 insertions(+), 3 deletions(-) commit 4be7310fb168b128f6fe796f44349525730ac558 Author: Emmanuele Bassi Date: Thu Aug 12 09:03:58 2010 +0100 build: Make the introspection generation quiet (again) cogl/Makefile.am | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit 8b8dd92be367263bb57b2e9891d1f30e95223d73 Author: Emmanuele Bassi Date: Wed Aug 11 11:32:44 2010 +0100 Merge branch 'wip/table-layout' * wip/table-layout: Add ClutterTableLayout, a layout showing children in rows and columns box-layout: Use allocate_align_fill() bin-layout: Migrate to allocate_align_fill() actor: Add allocate_align_fill() test-flow-layout: Use BindConstraints commit d8e521af0a98d55a2505598995ba2eabf3495f16 Author: Owen W. Taylor Date: Mon Aug 9 15:06:35 2010 -0400 Always bind a new texture to unit 1 when necessary The special handling for texture unit 1 caught the case where unit 1 was changed for transient purposes, but didn't properly handle the case where the actual non-transient texture was different between two materials with no transient binding in between. If the actual texture has changed when flushing, mark unit 1 as dirty and needing a rebind. http://bugzilla.clutter-project.org/show_bug.cgi?id=2261 cogl/cogl-material-opengl.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit 242afd96ebd11b430f6c95118883b484f6f73ca8 Author: Emmanuele Bassi Date: Mon Aug 9 19:38:23 2010 +0100 Silence a compiler warning cogl/cogl-shader.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 786e292671753421daf103a8140eb06532ebeb8d Merge: 65196a4 abea3d7 Author: Emmanuele Bassi Date: Mon Aug 9 17:44:42 2010 +0100 Merge remote branch 'elliot/cookbook-layouts-introduction' * elliot/cookbook-layouts-introduction: cookbook: Added layout introduction and "stacking actors" recipe cookbook: Added layouts.xml to the list of XML files cookbook: Added layouts section and introduction commit 65196a4a9b58ae417588c5721b7ece3c92342999 Author: Robert Bragg Date: Wed Aug 4 17:53:51 2010 +0100 cogl: Allow setting ARBfp source on a CoglShader This makes CoglProgram/Shader automatically detect when the user has given an ARBfp program by checking for "!!ARBfp1.0" at the beginning of the user's source. ARBfp local parameters can be set with cogl_program_uniform_float assuming you pass a @size of 4 (all ARBfp program.local parameters are vectors of 4 floats). This doesn't expose ARBfp environment parameters or double precision local parameters. cogl/cogl-material-arbfp.c | 72 +++++++++++--- cogl/cogl-material-glsl.c | 24 ++--- cogl/cogl-shader-private.h | 13 +++ cogl/cogl-shader.c | 116 ++++++++++++++++++---- cogl/cogl.c | 6 +- cogl/driver/gl/cogl-program.c | 204 +++++++++++++++++++++++++++++++++------ cogl/driver/gl/cogl-program.h | 11 ++- cogl/driver/gles/cogl-program.c | 7 ++ 8 files changed, 371 insertions(+), 82 deletions(-) commit 11045c724c9344f2f3146054c9ed533d0d6e29ff Author: Robert Bragg Date: Thu Aug 5 10:59:03 2010 +0100 cogl: Adds a COGL_FEATURE_SHADERS_ARBFP feature flag This adds a public feature flag for ARBfp so developers can determine if the cogl API supports ARBfp or not. cogl/cogl-internal.h | 2 +- cogl/cogl-material-arbfp.c | 2 +- cogl/cogl-types.h | 4 +++- cogl/cogl.c | 2 +- cogl/driver/gl/cogl-feature-functions.h | 4 ++-- 5 files changed, 8 insertions(+), 6 deletions(-) commit b025a4a020a39a86070da362d02977e107514295 Author: Robert Bragg Date: Thu Aug 5 10:46:54 2010 +0100 material: Add cogl_material_{get,set}_user_program Previously we had an internal only _cogl_material_set_user_program to redirect legacy usage of cogl_program_use() through CoglMaterial. This instead makes the API public because until we implement our planned "snippet" framework we need a stop-gap solution for using shaders in Cogl. The plan is to also support ARBfp with the cogl_program/shader API so this API will also allow clutter-gst to stop using direct OpenGL calls that conflict with Cogl's state tracking. cogl/cogl-material-private.h | 4 -- cogl/cogl-material.c | 24 +++++++++++++-- cogl/cogl-material.h | 64 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 8 deletions(-) commit 937fc0dbec965a4aed55d310da9590fb0dde6b7e Author: Robert Bragg Date: Sun Aug 8 13:54:07 2010 +0100 material: chain up in layer_pre_change_notify A change to a layer is also going to be a change to its owning material so we have to chain up in _cogl_material_layer_pre_change_notify and call _cogl_material_pre_change_notify. Previously we were only considering if the owning material was referenced in the journal but that ignores that it might also have dependants. We no longer need to flush the journal directly in layer_pre_change_notify. cogl/cogl-material.c | 16 ++++++++++++---- 1 files changed, 12 insertions(+), 4 deletions(-) commit b493b3025783c3141bc989c5a89723da889eac04 Author: Robert Bragg Date: Sun Aug 8 14:26:45 2010 +0100 material: unlink old layer from owner when replacing In _cogl_material_layer_pre_change_notify when we see that a layer has dependants and it can't be modified directly then we allocate a new layer. In this case we also have to link the new layer to its required owner. If the immutable layer we copied had the same owner though we weren't unlinking that old layer. cogl/cogl-material.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 021265e634d4b6ee5fa279693e02d3976ef43feb Author: Robert Bragg Date: Sun Aug 8 13:41:15 2010 +0100 material: fix initialization of sparse properties In _cogl_material_pre_change_notify we need to identify if it's a sparse property being changed and if so initialize the state group if the given material isn't currently the authority for it. Previously we were unconditionally calling _cogl_material_initialize_state which would e.g. NULL the layer differences list of a material each time a layer change was notified. It would also call _cogl_material_initialize_state for non-sparse properties which should always be valid at this point so the function has been renamed to _cogl_material_initialize_sparse_state to make this clearer with a corresponding g_return_if_fail check. cogl/cogl-material.c | 25 ++++++++++++++----------- 1 files changed, 14 insertions(+), 11 deletions(-) commit 02ce77dc08705eb6aa1260fdfb234e7af670672a Author: Robert Bragg Date: Sun Aug 8 13:09:27 2010 +0100 material: fix copying of material layer differences This fixes how we copy layer differences in _cogl_material_copy_layer_differences. We were making a redundant g_list_copy of the src differences and then iterating the src list calling _cogl_material_add_layer_difference for each entry which would double the list length, but the initial copy directly referenced the original layers which wasn't correct. Also we were initializing dest->n_layers before copying the layer differences but the act of copying the differences will re-initialize n_layers to 0 when adding the first layer_difference since it will trigger a layer_pre_change_notify and since the dest material isn't yet a STATE_LAYERS authority the state group is initialized before allowing the change. cogl/cogl-material.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) commit a75a7fadabf40eb08f2c0a051e723732f7eb84c2 Author: Robert Bragg Date: Sun Aug 8 13:05:40 2010 +0100 material: don't dereference layer->texture directly In _cogl_material_texture_storage_change_notify we were potentially dereferencing layer->texture without checking first that it is the authority of texture state. We now use _cogl_material_layer_get_texture() instead. cogl/cogl-material-opengl.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 8caaf5a8b233f138f354028fdd6f8fd4e1014cf9 Author: Robert Bragg Date: Sun Aug 8 14:09:26 2010 +0100 material: Improve the dot file debugging code This improve the dot file output available when calling _cogl_debug_dump_materials_dot_file. The material graph now directly points into the layer graph and the layers now show the texture unit index. cogl/cogl-material.c | 30 ++++++++++++++++-------------- 1 files changed, 16 insertions(+), 14 deletions(-) commit abea3d7ead5b2d91a82d6ac9504ee28986f6c8bb Author: Neil Roberts Date: Fri Aug 6 16:41:41 2010 +0100 cogl-material: Unref the texture when reverting authority When the texture is set on a layer so that it is back to the parent's texture it would clear the texture change flag but it wouldn't unref the texture. The free function for a material layer does not unref the texture if the change flag is cleared so the texture would end up leaking. This happens for ClutterTexture because it disposes the texture by setting layer 0 of the material to COGL_INVALID_HANDLE which ends up the same as the default material. cogl/cogl-material.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit eda852e78cb4037322bb9c4190f9a702bf74883e Author: Robert Bragg Date: Fri Aug 6 14:12:22 2010 +0100 material: only deference layer->texture for authority In _cogl_material_layer_pre_paint we were mistakenly dereferencing the layer->texture member for the passed layer instead of dereferencing the texture state authority which was causing crashes in some cases. cogl/cogl-material.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 3aca1462150be07a78f3e581a34cffb6462e1aa8 Merge: 99ae7b1 a2c2797 Author: Emmanuele Bassi Date: Tue Aug 3 15:44:46 2010 +0100 Merge remote branch 'elliot/cookbook-animations-rotating' * elliot/cookbook-animations-rotating: cookbook: Added recipe for animated rotation of an actor cookbook: Add explanation about including code samples cookbook: Make filename used in video example consistent cookbook: Add example code for animated rotation commit 99ae7b15f5dc462ef2f31f9fd5207e868bcbd65e Author: Robert Bragg Date: Fri Jul 23 10:12:39 2010 +0100 cogl-program: gles2: bind programs lazily as for GL This makes the gles2 cogl_program_use consistent with the GL version by not binding the program immediately and instead leaving it to cogl-material.c to bind the program when actually drawing something. cogl/cogl-material-glsl.c | 3 --- cogl/cogl-material-opengl-private.h | 2 +- cogl/cogl-material-opengl.c | 34 ++++++++++++++++++++-------------- cogl/driver/gl/cogl-program.c | 10 +++++----- cogl/driver/gles/cogl-program.c | 3 --- 5 files changed, 26 insertions(+), 26 deletions(-) commit 650df3f2eb3bb187bb7313ab9d5071a00a6ce4a4 Author: Robert Bragg Date: Tue Jun 8 23:06:50 2010 +0100 gles2: Have CoglProgram track uniforms per program Previously custom uniforms were tracked in _CoglGles2Wrapper but as part of a process to consolidate the gl/gles2 shader code it seems to make sense for this state to be tracked in the CoglProgram object instead. http://bugzilla.o-hand.com/show_bug.cgi?id=2179 cogl/driver/gles/cogl-gles2-wrapper.c | 41 +++++++++++++++++---------------- cogl/driver/gles/cogl-gles2-wrapper.h | 11 ++++----- cogl/driver/gles/cogl-program.c | 38 ++++++++++++++++++++---------- cogl/driver/gles/cogl-program.h | 11 ++++++++- 4 files changed, 61 insertions(+), 40 deletions(-) commit 7705469d2ba6388740001e61363b02c0b226ffd9 Author: Robert Bragg Date: Mon Aug 2 21:40:55 2010 +0100 cogl-shader: unifies the driver/{gl,gles} shader files The per driver implementations of cogl-shader.c had become almost identical we now have a single cogl/cogl-shader.c instead. cogl/Makefile.am | 2 + cogl/cogl-shader-private.h | 40 ++++++ cogl/cogl-shader.c | 235 ++++++++++++++++++++++++++++++++ cogl/driver/gl/Makefile.am | 2 - cogl/driver/gl/cogl-shader-private.h | 40 ------ cogl/driver/gl/cogl-shader.c | 169 ----------------------- cogl/driver/gles/Makefile.am | 2 - cogl/driver/gles/cogl-shader-private.h | 40 ------ cogl/driver/gles/cogl-shader.c | 214 ----------------------------- 9 files changed, 277 insertions(+), 467 deletions(-) commit 6e176f94faf6a2dd38ea29eafbef0b28e3598edc Author: Robert Bragg Date: Fri Jul 23 17:44:53 2010 +0100 cogl-shader: Store the CoglShaderType in CoglShader Instead of having to query GL and translate the GL enum into a CoglShaderType each time cogl_shader_get_type is called we now keep track of the type in CoglShader. cogl/driver/gl/cogl-shader-private.h | 1 + cogl/driver/gl/cogl-shader.c | 14 ++------------ cogl/driver/gles/cogl-shader.c | 13 +------------ 3 files changed, 4 insertions(+), 24 deletions(-) commit 8640f527cb36ace0af291d42871c5463e3f99502 Author: Robert Bragg Date: Sun Jul 25 21:36:41 2010 +0100 cogl: don't include cogl-debug.h in cogl.h or install cogl-debug.h is an internal header so it shouldn't have been included by cogl.h and the header shouldn't be installed either. cogl/Makefile.am | 2 +- cogl/cogl-atlas-texture.c | 1 + cogl/cogl-bitmap.c | 1 + cogl/cogl-framebuffer.c | 1 + cogl/cogl-journal.c | 1 + cogl/cogl-material-arbfp.c | 1 + cogl/cogl-material-opengl.c | 1 + cogl/cogl-material.c | 1 + cogl/cogl-matrix.c | 1 + cogl/cogl-primitives.c | 1 + cogl/cogl-texture-2d-sliced.c | 1 + cogl/cogl.h | 1 - cogl/winsys/cogl-texture-pixmap-x11.c | 1 + pango/cogl-pango-render.c | 1 + 14 files changed, 13 insertions(+), 2 deletions(-) commit a2c2797105082e4abe9dbda0cc93670b7c72ce37 Author: Neil Roberts Date: Wed Jul 14 19:39:24 2010 +0100 gles/cogl-shader.c: Store the shader type in CoglShader Nothing was storing the shader type when a shader was created so it would get confused about whether it was a custom vertex or fragment shader. Also the 'type' member of CoglShader was a GLenum but the only place that read it was treating it as if it was CoglShaderType. This changes it be CoglShaderType. cogl/driver/gles/cogl-shader-private.h | 2 +- cogl/driver/gles/cogl-shader.c | 1 + 2 files changed, 2 insertions(+), 1 deletions(-) commit 023510636c74decc278074318f8732edf7b879fa Author: Neil Roberts Date: Thu Jul 22 16:58:23 2010 +0100 Plug the leaking CoglProgram and CoglShader _cogl_program_free and _cogl_shader_free never freed the struct their structs so it would end up leaking a little bit. cogl/driver/gl/cogl-program.c | 2 ++ cogl/driver/gl/cogl-shader.c | 2 ++ cogl/driver/gles/cogl-program.c | 2 ++ cogl/driver/gles/cogl-shader.c | 2 ++ 4 files changed, 8 insertions(+), 0 deletions(-) commit 2ccee98b31d3bd5cdebb9347cec44bad7cd3dd3d Author: Neil Roberts Date: Thu Jul 22 19:58:47 2010 +0100 cogl-bitmap-pixbuf: Avoid copying the buffer in more circumstances When loading an RGB image GdkPixbuf will pad the rowstride so that the beginning of each row is aligned to 4 bytes. This was causing us to fallback to the code that copies the buffer. It is probably safe to avoid copying the buffer if we can detect that the rowstride is simply an alignment of the packed rowstride. This also changes the copying fallback code so that it uses the aligned rowstride. However it is now extremely unlikely that the fallback code would ever be used. cogl/cogl-bitmap-pixbuf.c | 33 ++++++++++++++++++++++++--------- 1 files changed, 24 insertions(+), 9 deletions(-) commit fecb40a0433e6c069a27f6120506c105e747e2f7 Author: Neil Roberts Date: Thu Jul 22 19:15:44 2010 +0100 cogl-bitmap-pixbuf: Fix the rowstride used when copying a GdkPixbuf In commit b780413e5ae4b the GdkPixbuf loading code was changed so that if it needs to copy the pixbuf then it would tightly pack it. However it was still using the rowstride from the pixbuf so the image would end up skewed. This fixes it to use the real rowstride. http://bugzilla.clutter-project.org/show_bug.cgi?id=2235 cogl/cogl-bitmap-pixbuf.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 0ab6dc9db129bc0b2d084dd1ce0e6093d01bce6a Author: Neil Roberts Date: Tue Jul 20 17:34:04 2010 +0100 cogl-material: Don't map the shininess value to [0,1] In OpenGL the 'shininess' lighting parameter is floating point value limited to the range 0.0→128.0. This number is used to affect the size of the specular highlight. Cogl materials used to only accept a number between 0.0 and 1.0 which then gets multiplied by 128.0 before sending to GL. I think the assumption was that this is just a weird GL quirk so we don't expose it. However the value is used as an exponent to raise the attenuation to a power so there is no conceptual limit to the value. This removes the mapping and changes some of the documentation. http://bugzilla.clutter-project.org/show_bug.cgi?id=2222 cogl/cogl-material-opengl.c | 6 ++---- cogl/cogl-material.c | 4 +++- cogl/cogl-material.h | 9 +++++---- 3 files changed, 10 insertions(+), 9 deletions(-) commit 89286f6a474eafc1d22c99fc7bcaec5bc79cf3ba Author: Neil Roberts Date: Wed Jul 21 23:22:07 2010 +0100 cogl-material: Always reset the GLSL program to zero when flushing When flushing a fixed-function or arbfp material it would always call disable_glsl to try to get rid of the previous GLSL shader. This is needed even if current_use_program_type is not GLSL because if an application calls cogl_program_uniform then Cogl will have to bind the program to set the uniform. If this happens then it won't update current_use_program_type presumably because the enabled state of arbfp is still valid. The problem was that disable_glsl would only select program zero when the current_use_program_type is set to GLSL which wouldn't be the case if cogl_program_uniform was called. This patch changes it to just directly call _cogl_gl_use_program_wrapper(0) instead of having a separate disable_glsl function. The current program is cached in the cogl context anyway so it shouldn't cause any extra unnecessary GL calls. http://bugzilla.clutter-project.org/show_bug.cgi?id=2232 cogl/cogl-material-opengl.c | 15 ++------------- 1 files changed, 2 insertions(+), 13 deletions(-) commit 5b6298db102327bc10c3deecaafe465150e505e1 Author: Neil Roberts Date: Sat Jul 17 14:08:28 2010 +0100 cogl-material: Consider the shader when deciding if materials equate _cogl_material_equal was ignoring the user shader state so rectangles with different shaders would get batched together. http://bugzilla.clutter-project.org/show_bug.cgi?id=2220 cogl/cogl-material.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-) commit b2247b10fd4c53572c04fe539802dfac2b1145f6 Author: Neil Roberts Date: Sat Jul 17 12:40:19 2010 +0100 cogl-material-arbfp: Use separate buffers when calling g_ascii_dtostr g_ascii_dtostr was being used in four separate arguments to g_string_append_printf but all invocations of it were using the same buffer. This would end up with all of the arguments having the same value which would depend on whichever order the compiler evaluates them in. This patches changes it to use a multi-dimensional array and a loop to fill in the separate buffers. http://bugzilla.clutter-project.org/show_bug.cgi?id=2219 cogl/cogl-material-arbfp.c | 19 ++++++++++--------- 1 files changed, 10 insertions(+), 9 deletions(-) commit 62fa7b4e028db5364d033ec0b6b497df7bc67457 Author: Emmanuele Bassi Date: Fri Jul 16 23:37:59 2010 +0100 material-arbfp: Use locale-independent double to string conversion The ARBfp programs are created with a printf() wrapper, which usually fails in non-en locales as soon as you start throwing things like floating point values in the mix. We should use the g_ascii_dtostr() function which places a double into a string buffer in a locale-independent way. http://bugzilla.clutter-project.org/show_bug.cgi?id=2219 cogl/cogl-material-arbfp.c | 16 +++++++++++----- 1 files changed, 11 insertions(+), 5 deletions(-) commit 094ad196071f964a8b59fb12416a610e73e67338 Merge: a3a7a7e 4eca571 Author: Emmanuele Bassi Date: Fri Jul 16 17:23:36 2010 +0100 Merge remote branch 'elliot/cookbook-actor-opacity' Conflicts: doc/cookbook/Makefile.am commit a3a7a7ebcb89c25cd268a91e1055a99318a959ba Merge: ae8fe82 7d269c6 Author: Emmanuele Bassi Date: Fri Jul 16 17:13:12 2010 +0100 Merge remote branch 'elliot/cookbook-include-videos' * elliot/cookbook-include-videos: cookbook: Tweak so that videos sit inside a paragraph for better spacing docs: Note the P_() macro in the HACKING file cookbook: Added support for inline video Conflicts: doc/cookbook/Makefile.am commit ae8fe829b62b01d942e8cbb066f181714151da78 Author: Emmanuele Bassi Date: Fri Jul 16 17:12:37 2010 +0100 Merge remote branch 'elliot/cookbook-animation-fading' * elliot/cookbook-animation-fading: cookbook: Minor modification to wording to improve clarity cookbook: Added recipe for fading actors in/out commit 4eca571a32a0669650de99eee4362c13600c7d4c Author: Neil Roberts Date: Thu Jul 15 13:05:55 2010 +0100 Add an internal _cogl_bitmap_new_from_buffer This function creates a CoglBitmap which internally references a CoglBuffer. The map and unmap functions will divert to mapping the buffer. There are also now bind and unbind functions which should be used instead of map and unmap whenever the data doesn't need to be read from the CPU but will instead be passed to GL for packing or unpacking. For bitmaps created from buffers this just binds the bitmap. cogl_texture_new_from_buffer now just uses this function to wrap the buffer in a bitmap rather than trying to bind the buffer immediately. This means that the buffer will be bound only at the point right before the texture data is uploaded. This approach means that using a pixel array will take the fastest upload route if possible, but can still fallback to copying the data by mapping the buffer if some conversion is needed. Previously it would just crash in this case because the texture functions were all passed a NULL pointer. http://bugzilla.clutter-project.org/show_bug.cgi?id=2112 cogl/cogl-bitmap-private.h | 25 ++++++ cogl/cogl-bitmap.c | 139 ++++++++++++++++++++++++++++++-- cogl/cogl-texture.c | 37 ++------- cogl/driver/gl/cogl-texture-driver.c | 114 ++++++++++++-------------- cogl/driver/gles/cogl-texture-driver.c | 81 +++++++++--------- 5 files changed, 261 insertions(+), 135 deletions(-) commit e5dc645753e958c6b9d59b0c8cf58da1924c22e7 Author: Neil Roberts Date: Thu Jul 15 13:02:23 2010 +0100 Add a Cogl debug flag for BITMAP CoglBitmap will soon want to report notes as it gets more complicated so this adds a debug flag for it. cogl/cogl-debug.c | 3 ++- cogl/cogl-debug.h | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) commit c5205c50d246e033265b77d2b746a72c1137e7e1 Author: Neil Roberts Date: Thu Jul 15 11:32:08 2010 +0100 Try to avoid copying the GdkPixbuf when it is tightly packed The docs for GdkPixbuf say that the last row of the image won't necessarily be allocated to the size of the full rowstride. The rest of Cogl and possibly GL assumes that we can copy the bitmap with memcpy(height*rowstride) so we previously would copy the pixbuf data to ensure this. However if the rowstride is the same as bpp*width then there is no way for the last row to be under-allocated so in this case we can just directly upload from the gdk pixbuf. Now that CoglBitmap can be created with a destroy function we can make it keep a reference to the pixbuf and unref it during its destroy callback. GdkPixbuf seems to always pack the image with no padding between rows even if it is RGB so this should end up always avoiding the memcpy. The fallback code for when we do have to copy the pixbuf is now simplified so that it copies all of the rows in a single loop. We only copy the useful region of each row so this should be safe. The rowstride of the CoglBitmap is now always allocated to bpp*width regardless of the rowstride of the pixbuf. cogl/cogl-bitmap-pixbuf.c | 41 ++++++++++++++++++++++++----------------- 1 files changed, 24 insertions(+), 17 deletions(-) commit ccc3068ffdeb2c5b44ef54a6a2d06b7c3a08b694 Author: Neil Roberts Date: Wed Jul 7 18:44:16 2010 +0100 cogl-bitmap: Encapsulate the CoglBitmap even internally The CoglBitmap struct is now only defined within cogl-bitmap.c so that all of its members can now only be accessed with accessor functions. To get to the data pointer for the bitmap image you must first call _cogl_bitmap_map and later call _cogl_bitmap_unmap. The map function takes the same arguments as cogl_pixel_array_map so that eventually we can make a bitmap optionally internally divert to a pixel array. There is a _cogl_bitmap_new_from_data function which constructs a new bitmap object and takes ownership of the data pointer. The function gets passed a destroy callback which gets called when the bitmap is freed. This is similar to how gdk_pixbuf_new_from_data works. Alternatively NULL can be passed for the destroy function which means that the caller will manage the life of the pointer (but must guarantee that it stays alive at least until the bitmap is freed). This mechanism is used instead of the old approach of creating a CoglBitmap struct on the stack and manually filling in the members. It could also later be used to create a CoglBitmap that owns a GdkPixbuf ref so that we don't necessarily have to copy the GdkPixbuf data when converting to a bitmap. There is also _cogl_bitmap_new_shared. This creates a bitmap using a reference to another CoglBitmap for the data. This is a bit of a hack but it is needed by the atlas texture backend which wants to divert the set_region virtual to another texture but it needs to override the format of the bitmap to ignore the premult flag. cogl/cogl-atlas-texture-private.h | 2 +- cogl/cogl-atlas-texture.c | 187 +++++----- cogl/cogl-bitmap-fallback.c | 144 +++++--- cogl/cogl-bitmap-pixbuf.c | 82 ++--- cogl/cogl-bitmap-private.h | 109 +++++-- cogl/cogl-bitmap.c | 228 ++++++++++-- cogl/cogl-texture-2d-private.h | 2 +- cogl/cogl-texture-2d-sliced-private.h | 2 +- cogl/cogl-texture-2d-sliced.c | 607 ++++++++++++++++++-------------- cogl/cogl-texture-2d.c | 70 +++-- cogl/cogl-texture-3d-private.h | 2 +- cogl/cogl-texture-3d.c | 109 +++--- cogl/cogl-texture-private.h | 4 +- cogl/cogl-texture-rectangle-private.h | 2 +- cogl/cogl-texture-rectangle.c | 43 ++-- cogl/cogl-texture.c | 355 +++++++++++-------- cogl/cogl.c | 77 +++-- cogl/driver/gl/cogl-texture-driver.c | 116 ++++--- cogl/driver/gles/cogl-texture-driver.c | 200 ++++++----- 19 files changed, 1421 insertions(+), 920 deletions(-) commit 41cd2ae2c84f2e217cebb632d303a16fbb7a9fb5 Author: Neil Roberts Date: Wed Jul 14 13:21:54 2010 +0100 cogl-texture-2d-sliced: Store the internal format not image format The 'format' member of CoglTexture2DSliced is returned by cogl_texture_get_format. All of the other backends return the internal format of the GL texture in this case. However the sliced backend was returning the format of the image data used to create the texture. It doesn't make any sense to retain this information because it doesn't necessarily indicate the format of the actual texture. This patch changes it to store the internal format instead. cogl/cogl-texture-2d-sliced.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) commit 7d269c631532bcdfa556016b4d18249391f53cef Author: Neil Roberts Date: Wed Jul 14 17:49:16 2010 +0100 gles/cogl-texture-driver.c: Fix the include for cogl-material-private In ddb9016be4 the GL texture driver backend was changed to include cogl-material-opengl-private.h instead of cogl-material-private.h. However the gles texture backend was missed from this so it was giving a compiler warning about using an undeclared function. cogl/driver/gles/cogl-texture-driver.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 00e3d77be3adee84cb934d912d075d31d35b04b7 Author: Neil Roberts Date: Wed Jul 14 17:45:15 2010 +0100 cogl-texture-3d: Use glTexSubImage3D through an indirect pointer glTexSubImage3D was being called directly in cogl-texture-3d.c but the function is only available since GL version 1.2 so on Windows it won't be possible to directly link to it. Also under GLES it is only available conditionally in an extension. cogl/cogl-texture-3d.c | 1 + cogl/driver/gl/cogl-feature-functions.h | 7 +++++++ 2 files changed, 8 insertions(+), 0 deletions(-) commit a104b37068b4603fd548a86336d38c674bb6ce11 Author: Neil Roberts Date: Wed Jul 14 16:35:33 2010 +0100 cogl-texture-3d: Fix the cogl-material-private header include In ddb9016be4 the texture backends were changed to include cogl-material-opengl-private.h instead of cogl-material-private.h. However the 3D texture backend was missed from this so it was giving a compiler warning about using an undeclared function. cogl/cogl-texture-3d.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 8b8f5efbe523a1cf1b461df214562b7c4522b674 Author: Neil Roberts Date: Wed Jul 14 16:34:36 2010 +0100 cogl-texture-3d: Don't include cogl-texture-2d-private.h I think this was included by a cut-and-paste error as it isn't needed anywhere in the source. cogl/cogl-texture-3d.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit 96b0e6c3047aa6361da173fe5221434920b3c8fa Author: Robert Bragg Date: Sat Jul 10 03:40:47 2010 +0100 material: splits out all the state flushing code This moves the code supporting _cogl_material_flush_gl_state into cogl-material-opengl.c as part of an effort to reduce the size of cogl-material.c to keep it manageable. cogl/cogl-journal.c | 1 + cogl/cogl-material-opengl-private.h | 7 + cogl/cogl-material-opengl.c | 1014 +++++++++++++++++++++++++++++++++ cogl/cogl-material-private.h | 26 +- cogl/cogl-material.c | 1061 ++--------------------------------- cogl/cogl-path.c | 1 + cogl/cogl-primitives.c | 1 + cogl/cogl-vertex-buffer.c | 1 + cogl/cogl.c | 1 + cogl/driver/gl/cogl-program.c | 1 + 10 files changed, 1088 insertions(+), 1026 deletions(-) commit 5442e429ba85718c85bdb9ca8ea529d5d2013098 Author: Robert Bragg Date: Sat Jul 10 02:53:38 2010 +0100 material: split the texture unit management out In general cogl-material.c has become far to large to manage in one source file. As one of the ways to try and break it down this patch starts to move some of lower level texture unit state management out into cogl-material-opengl.c. The naming is such because the plan is to follow up and migrate the very GL specific state flushing code into the same file. cogl/Makefile.am | 2 + cogl/cogl-atlas-texture.c | 1 + cogl/cogl-context.c | 1 + cogl/cogl-material-fixed.c | 1 + cogl/cogl-material-opengl-private.h | 148 +++++++++++++++++++++ cogl/cogl-material-opengl.c | 230 +++++++++++++++++++++++++++++++++ cogl/cogl-material-private.h | 110 ---------------- cogl/cogl-material.c | 197 +--------------------------- cogl/cogl-texture-2d-sliced.c | 2 +- cogl/cogl-texture-2d.c | 2 +- cogl/cogl-texture-rectangle.c | 1 + cogl/driver/gl/cogl-texture-driver.c | 2 +- cogl/winsys/cogl-texture-pixmap-x11.c | 1 + 13 files changed, 391 insertions(+), 307 deletions(-) commit be9564b3db8bf28fdd4f3f2d681add340917841e Author: Robert Bragg Date: Sat Jul 10 01:36:22 2010 +0100 material: copy_differences: handle copying fog state When the support for redirecting the legacy fog state through cogl material was added in 9b9e764dc, the code to handle copying the fog state in _cogl_material_copy_differences was missed. cogl/cogl-material.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) commit ae88bff3294f574ba65761b5c3d08734367078fa Author: Neil Roberts Date: Tue Jul 13 18:41:01 2010 +0100 Add a GL_GENERATE_MIPMAP fallback to the texture 2d and 3d backends The CoglTexture2DSliced backend has a fallback for when the framebuffer extension is missing so it's not possible to use glGenerateMipmap. This involves keeping a copy of the upper-left pixel of the tex image so that we can temporarily enable GL_GENERATE_MIPMAP on the texture object and do a sub texture update by reuploading the contents of the first pixel. This patch copies that mechanism to the 2D and 3D backends. The CoglTexturePixel structure which was previously internal to the sliced backend has been moved to cogl-texture-private.h so that it can be shared. cogl/cogl-texture-2d-private.h | 2 + cogl/cogl-texture-2d-sliced-private.h | 13 -------- cogl/cogl-texture-2d.c | 48 ++++++++++++++++++++++++------- cogl/cogl-texture-3d-private.h | 2 + cogl/cogl-texture-3d.c | 50 +++++++++++++++++++++------------ cogl/cogl-texture-private.h | 16 ++++++++++ 6 files changed, 89 insertions(+), 42 deletions(-) commit 9e8d3d17b0994f2d5f8572319beb4e9ab9840d48 Merge: 671abec 23a1729 Author: Emmanuele Bassi Date: Tue Jul 13 16:12:14 2010 +0100 Merge branch 'wip/xkb-support' * wip/xkb-support: x11: Use XKB to translate keycodes into key symbols x11: Use XKB to track the Locks state x11: Use XKB detectable auto-repeat x11: Add a Keymap ancillary object x11: Store the group inside the event platform data events: Add platform-data to allocated Events build: Check for the XKB extension commit 671abec8b792ae96c62253c99482d0f49b1aab8b Author: Neil Roberts Date: Fri Jul 2 13:33:06 2010 +0100 Make the material functions for setting the p wrap mode public Now that we have 3D texture support it makes sense to expose the wrap mode for the p coordinate. cogl/cogl-material-private.h | 10 --------- cogl/cogl-material.c | 15 +++++-------- cogl/cogl-material.h | 38 ++++++++++++++++++++++++++++++--- cogl/cogl-vertex-buffer.c | 2 +- doc/reference/cogl/cogl-sections.txt | 2 + 5 files changed, 43 insertions(+), 24 deletions(-) commit ec718d4ca47923edfb9687b3929a824a8c7005ac Author: Neil Roberts Date: Mon Jul 12 17:01:32 2010 +0100 Rename the third texure coordinate from 'r' to 'p' Using 'r' to name the third component is problematic because that is commonly used to represent the red component of a vector representing a color. Under GLSL this is awkward because the texture swizzling for a vector uses a single letter for each component and the names for colors, textures and positions are synonymous. GLSL works around this by naming the components of the texture s, t, p and q. Cogl already effectively already exposes this naming because it exposes GLSL so it makes sense to use that naming consistently. Another alternative could be u, v and w. This is what Blender and Direct3D use. However the w component conflicts with the w component of a position vertex. cogl/cogl-atlas-texture.c | 4 +- cogl/cogl-material-private.h | 8 ++-- cogl/cogl-material.c | 68 +++++++++++++++++++------------- cogl/cogl-sub-texture.c | 4 +- cogl/cogl-texture-2d-sliced.c | 2 +- cogl/cogl-texture-2d.c | 2 +- cogl/cogl-texture-3d-private.h | 2 +- cogl/cogl-texture-3d.c | 10 ++-- cogl/cogl-texture-private.h | 4 +- cogl/cogl-texture-rectangle.c | 2 +- cogl/cogl-texture.c | 4 +- cogl/cogl-vertex-buffer.c | 4 +- cogl/winsys/cogl-texture-pixmap-x11.c | 4 +- 13 files changed, 65 insertions(+), 53 deletions(-) commit 5288f6d88d94988875d69d8a850053f66319d042 Author: Neil Roberts Date: Thu Jul 1 22:04:59 2010 +0100 Add a Cogl texture 3D backend This adds a publicly exposed experimental API for a 3D texture backend. There is a feature flag which can be checked for whether 3D textures are supported. Although we require OpenGL 1.2 which has 3D textures in core, GLES only provides them through an extension so the feature can be used to detect that. The textures can be created with one of two new API functions :- cogl_texture_3d_new_with_size and cogl_texture_3d_new_from_data There is also internally a new_from_bitmap function. new_from_data is implemented in terms of this function. The two constructors are effectively the only way to upload data to a 3D texture. It does not work to call glTexImage2D with the GL_TEXTURE_3D target so the virtual for cogl_texture_set_region does nothing. It would be possible to make cogl_texture_get_data do something sensible like returning all of the images as a single long image but this is not currently implemented and instead the virtual just always fails. We may want to add API specific to the 3D texture backend to get and set a sub region of the texture. All of those three functions can throw a GError. This will happen if the GPU does not support 3D textures or it does not support NPOTs and an NPOT size is requested. It will also fail if the FBO extension is not supported and the COGL_TEXTURE_NO_AUTO_MIPMAP flag is not given. This could be avoided by copying the code for the GL_GENERATE_MIPMAP TexParameter fallback, but in the interests of keeping the code simple this is not yet done. This adds a couple of functions to cogl-texture-driver for uploading 3D data and querying the 3D proxy texture. prep_gl_for_pixels_upload_full now also takes sets the GL_UNPACK_IMAGE_HEIGHT parameter so that 3D textures can have padding between the images. Whenever 3D texture is uploading, both the height of the images and the height of all of the data is specified (either explicitly or implicilty from the CoglBitmap) so that the image height can be deduced by dividing by the depth. cogl/Makefile.am | 3 + cogl/cogl-material-arbfp.c | 7 + cogl/cogl-texture-3d-private.h | 96 +++++ cogl/cogl-texture-3d.c | 657 +++++++++++++++++++++++++++++ cogl/cogl-texture-3d.h | 154 +++++++ cogl/cogl-texture-driver.h | 26 ++ cogl/cogl-types.h | 4 +- cogl/cogl.h | 1 + cogl/driver/gl/cogl-feature-functions.h | 14 + cogl/driver/gl/cogl-texture-driver.c | 108 ++++- cogl/driver/gles/cogl-feature-functions.h | 19 + cogl/driver/gles/cogl-gles2-wrapper.c | 23 +- cogl/driver/gles/cogl-gles2-wrapper.h | 4 + cogl/driver/gles/cogl-texture-driver.c | 135 ++++++- doc/reference/cogl/cogl-docs.xml.in | 1 + doc/reference/cogl/cogl-sections.txt | 8 + 16 files changed, 1233 insertions(+), 27 deletions(-) commit 159c7ed7e55dadd203dc15762951e6769ae1b02f Author: Neil Roberts Date: Mon Jul 12 14:30:44 2010 +0100 configure: Include gl2ext.h or glext.h under GLES Under big GL, glext.h is included automatically by gl.h. However under GLES this doesn't appear to happen so it has to be included explicitly to get the defines for extensions. This patch changes the clutter_gl_header to be called cogl_gl_headers and it can now take a space seperated list of multiple headers. This is then later converted to a list of #include lines which ends up cogl-defines.h. The gles2 and gles1 backends now add their respective ext header to this list. cogl/cogl-defines.h.in | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 42dcffbc3a02df2dfdcbfce79f4f0170c40ab751 Author: Neil Roberts Date: Thu Jul 1 21:49:16 2010 +0100 Make a public CoglBitmapError enum There are many places in the texture backend that need to do conversion using the CoglBitmap code. Currently none of these functions can throw an error but they do return a value to indicate failure. In future it would make sense if new texture functions could throw an error and in that case they would want to use a CoglBitmap error if the failure was due to the conversion. This moves the internal CoglBitmap error from the quartz backend to be public in cogl-bitmap.h so that it can be used in this way. cogl/cogl-bitmap-pixbuf.c | 16 ---------------- cogl/cogl-bitmap.c | 5 +++++ cogl/cogl-bitmap.h | 32 ++++++++++++++++++++++++++++++++ doc/reference/cogl/cogl-sections.txt | 2 ++ 4 files changed, 39 insertions(+), 16 deletions(-) commit 396ef40d43baa41b05fd5fe8aa201ef0c11bb269 Author: Neil Roberts Date: Tue Jul 13 12:59:24 2010 +0100 Rename COGL_ERROR_MISSING_FEATURE to COGL_ERROR_UNSUPPORTED We can use this error in more unsupported situations than just when we have a Cogl feature flag for the error. For example if a non-sliced texture is created with dimensions that are too large then we could throw this error. Therefore it seems good to rename to something more general. cogl/cogl-material.c | 4 ++-- cogl/cogl-types.h | 21 ++++++++++++++++++--- 2 files changed, 20 insertions(+), 5 deletions(-) commit c3489a0a22308b76c064e13926f0f18d7456292a Author: Neil Roberts Date: Thu Jul 1 11:07:03 2010 +0100 Move _cogl_texture_2d_is_pot to cogl-util.h This function could be used in many places in Cogl so it makes sense to share it in cogl-util.h as _cogl_util_is_pot(). cogl/cogl-texture-2d.c | 11 ++--------- cogl/cogl-util.h | 8 ++++++++ 2 files changed, 10 insertions(+), 9 deletions(-) commit ccd45fc723611b43247638d16968393ecad12e58 Author: Neil Roberts Date: Tue Jul 13 13:59:07 2010 +0100 cogl-gles2-wrapper: Layers aren't equal if one is enabled and one is not Previously when comparing whether the settings for a layer are equal it would only check if one of them was enabled. If so then it would assume the other one was enabled and continue to compare the texture environment. Now it also checks whether the enabledness differs. cogl/driver/gles/cogl-gles2-wrapper.c | 62 ++++++++++++++++++--------------- 1 files changed, 34 insertions(+), 28 deletions(-) commit 23a172935d59491771e328166c4eb08e4ef8d9ca Merge: 8dba134 044523d Author: Emmanuele Bassi Date: Mon Jul 12 21:25:25 2010 +0100 Merge remote branch 'elliot/cookbook-animation-inversion' * elliot/cookbook-animation-inversion: cookbook: Fixed invalid XML tag cookbook: Added "inverting an animation" recipe docs: Enabled animation section commit 8dba1349c30460ed817efa83e37f54340512e0d3 Merge: 89df91a 044523d Author: Emmanuele Bassi Date: Mon Jul 12 21:25:22 2010 +0100 Merge remote branch 'elliot/cookbook-animation-intro' * elliot/cookbook-animation-intro: cookbook: Added introduction for animations section docs: Enabled animation section commit 89df91a3897981e50e3eb790fe0da77fb429dcdd Merge: 044523d bf56e79 Author: Emmanuele Bassi Date: Mon Jul 12 21:20:30 2010 +0100 Merge remote branch 'elliot/cookbook-consistency' * elliot/cookbook-consistency: cookbook: Fixed typo cookbook: Fix build so CSS files get installed cookbook: Moved paragraph where it logically belongs cookbook: Added some judicious note elements cookbook: Added more information for contributors cookbook: Link out to docbook site cookbook: Made docbook element usage consistent cookbook: Additional selectors in CSS stylesheet cookbook: Copy the CSS file into the HTML build directory commit 044523db26c730b43e5c408d7528505c13120f7e Author: Neil Roberts Date: Fri Jul 9 19:09:49 2010 +0100 Add the deprecated ref-counting for cogl_program cogl_program has always had cogl_program_ref and cogl_program_unref but this was missed from 89cb325fd4 so they got removed. cogl/driver/gl/cogl-program.c | 1 + cogl/driver/gles/cogl-program.c | 1 + 2 files changed, 2 insertions(+), 0 deletions(-) commit 2c8bf0099572a5498fa9cc0fe8b5c034a93bfab0 Author: Neil Roberts Date: Fri Jul 9 18:46:31 2010 +0100 Don't define public cogl_is_* functions for internal types This adds a COGL_OBJECT_INTERNAL_DEFINE macro and friends that are the same as COGL_OBJECT_DEFINE except that they prefix the cogl_is_* function with an underscore so that it doesn't get exported in the shared library. cogl/cogl-atlas-texture.c | 2 +- cogl/cogl-clip-stack.c | 4 +- cogl/cogl-framebuffer.c | 8 ++-- cogl/cogl-material.c | 18 ++++++---- cogl/cogl-object-private.h | 78 ++++++++++++++++++++++++++++++----------- cogl/cogl-sub-texture.c | 4 +- cogl/cogl-texture-2d-sliced.c | 2 +- cogl/cogl-texture-2d.c | 4 +- cogl/cogl-texture-private.h | 6 +++ cogl/cogl-texture-rectangle.c | 2 +- 10 files changed, 87 insertions(+), 41 deletions(-) commit 9e3705ecb3b19ffbf65eff1baab018e2dd365d5e Author: Neil Roberts Date: Fri Jul 9 18:24:28 2010 +0100 Add cogl_vertex_buffer_is_indices to the public headers This function has always been defined in the shared library but it was missed from the public headers. cogl/cogl-vertex-buffer.h | 15 +++++++++++++++ doc/reference/cogl/cogl-sections.txt | 1 + 2 files changed, 16 insertions(+), 0 deletions(-) commit b25035ad2d83729247678ccd96fc4f26051820d4 Author: Neil Roberts Date: Fri Jul 9 17:59:16 2010 +0100 cogl: Don't define the deprecated ref/unref accessors for new types Previously COGL_OBJECT_DEFINE would always define deprecated cogl_$type_{ref,unref} functions even if the type is new or if the type is entirely internal. An application would still find it difficult to use these because they wouldn't be in the headers, but it still looks bad that they are exported from the shared library. This patch changes it so that the deprecated ref counting functions are defined using a separate macro and only the types that have these functions in the headers call this macro. cogl/cogl-framebuffer.c | 1 + cogl/cogl-material.c | 1 + cogl/cogl-object-private.h | 4 +++- cogl/cogl-vertex-buffer.c | 1 + cogl/driver/gl/cogl-shader.c | 1 + cogl/driver/gles/cogl-shader.c | 1 + 6 files changed, 8 insertions(+), 1 deletions(-) commit ea708094c598fa1b2356c84314e9f349234e3326 Author: Robert Bragg Date: Thu Jul 8 11:49:31 2010 +0100 material: use common node type for materials and layers Since 365605cf42, materials and layers are represented in a tree structure that allows traversing up through parents and iterating down through children. This re-works the related typedefs and reparenting code so that they can be shared. cogl/cogl-material-arbfp.c | 25 ++- cogl/cogl-material-private.h | 109 +++++----- cogl/cogl-material.c | 479 ++++++++++++++++++++++-------------------- 3 files changed, 326 insertions(+), 287 deletions(-) commit 2d20589d8e5f9c1fbdbc463b96cf264367acbf81 Author: Damien Lespiau Date: Fri Jul 9 17:55:31 2010 +0100 cogl-texture-pixmap-x11: This API is new in 1.4, not 1.2 CoglTexturePixmapX11 has been introduced in the 1.3 development cycle. A Stability: Unstable tag was missing too, so add it. cogl/winsys/cogl-texture-pixmap-x11.h | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-) commit c0fb59702c1d32a82cb555c57ccc1813beee321c Author: Damien Lespiau Date: Fri Jul 9 15:59:14 2010 +0100 cogl: Add Stability tag to new experimental API Functions guarded with COGL_ENABLE_EXPERIMENTAL API should be also maked as being Unstable with the Stability gtk-doc tag. Fixes: http://bugzilla.clutter-project.org/show_bug.cgi?id=2175 cogl/cogl-material.h | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) commit bf8384baf131242420eb80d260c62745472356c3 Author: Neil Roberts Date: Thu Jul 8 18:37:01 2010 +0100 Use GL_MAX_TEXTURE_SIZE on GLES when checking supported tex size Under big GL, _cogl_texture_driver_size_supported uses the proxy texture to check whether the given texture size is supported. Proxy textures aren't available under GLES so previously this would just return TRUE to assume all texture sizes are supported. This patch makes it use glGetIntegerv with GL_MAX_TEXTURE_SIZE to give a second best guess. This fixes the sliced texture backend so that it will use slices when the texture is too big. cogl/driver/gles/cogl-texture-driver.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) commit 0fbdafd318b77ddec4296f6f4fbdf5d1fe329f92 Author: Neil Roberts Date: Thu Jul 8 18:33:45 2010 +0100 Fix cogl_texture_get_data when an intermediate buffer is used When an intermediate buffer is used for downloading texture data it was using the wrong byte length for a row so the copy back to the user's buffer would fail. cogl/cogl-texture.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit d3ea1ec6f81aee661bb2b3520ad190d1587b5cba Author: Neil Roberts Date: Thu Jul 8 18:31:29 2010 +0100 Use GL_NEAREST filter in the draw-and-read get_data texture fallback The fallback for when glGetTexImage is not available renders the texture to the framebuffer to read the data using glReadPixels. This patch just sets the COGL_MATERIAL_FILTER_NEAREST filter mode on the material before rendering to avoid linear filtering which would alter the texture data. cogl/cogl-texture.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit f8d1955ab783a72d94b77fcf2d48ab3d08c7db72 Author: Neil Roberts Date: Thu Jul 8 18:29:12 2010 +0100 Use cogl_read_pixels in the cogl texture draw-and-read fallback The fallback for when glGetTexImage is not available draws parts of the texture to the framebuffer and uses glReadPixels to extract the data. However it was using cogl_rectangle to draw and then immediately using raw glReadPixels to fetch the data. This won't cause a journal flush so the rectangle won't necessarily have hit the framebuffer yet. Instead it now uses cogl_read_pixels which does flush the journal. cogl/cogl-texture.c | 15 +++++++-------- 1 files changed, 7 insertions(+), 8 deletions(-) commit 475a72fd94bc5eec0745df634896cb6b7e230dad Author: Neil Roberts Date: Thu Jul 8 18:28:11 2010 +0100 cogl-material: Fix some problems with flushing texture overrides There were a few problems flushing texture overrides so that sliced textures would not work: * In _cogl_material_set_layer_texture it ignored the 'overriden' parameter and always set texture_overridden to FALSE. * cogl_texture_get_gl_texture wasn't being called correctly in override_layer_texture_cb. It returns a gboolean to indicate the error status but this boolean was being assigned to gl_target. * _cogl_material_layer_texture_equal did not take into account the override. * _cogl_material_layer_get_texture_info did not return the overridden texture so it would always use the first texture slice. cogl/cogl-material.c | 22 ++++++++++++++++++---- 1 files changed, 18 insertions(+), 4 deletions(-) commit 61cbeeacfaaf2e4f548d4500d94118a813fd1ad5 Author: Neil Roberts Date: Thu Jul 8 15:15:22 2010 +0100 cogl-texture: Share the common code in the set_region virtual There was a lot of common code that was copied to all of the backends to convert the data to a suitable format and wrap it into a CoglBitmap so that it can be passed to _cogl_texture_driver_upload_subregion_to_gl. This patch moves the common code to cogl-texture.c so that the virtual just takes a CoglBitmap that is already in the right format. cogl/cogl-atlas-texture.c | 83 +++++++------------------------- cogl/cogl-sub-texture.c | 21 +++------ cogl/cogl-texture-2d-sliced.c | 57 ++++------------------ cogl/cogl-texture-2d.c | 58 ++++------------------ cogl/cogl-texture-private.h | 19 ++++++-- cogl/cogl-texture-rectangle.c | 58 ++++------------------ cogl/cogl-texture.c | 76 +++++++++++++++++++++++++----- cogl/winsys/cogl-texture-pixmap-x11.c | 6 +-- 8 files changed, 136 insertions(+), 242 deletions(-) commit 223317c5006ed5e594f4129b64e64b1ac97be9f2 Author: Neil Roberts Date: Thu Jul 8 13:54:37 2010 +0100 cogl-texture: Share the common code in the get_data virtual Previously cogl_texture_get_data would pretty much directly pass on to the get_data texture virtual function. This ended up with a lot of common code that was copied to all of the backends. For example, the method is expected to return the required data size if the data pointer is NULL and to calculate its own rowstride if the rowstride is 0. Also it needs to convert the downloaded data if GL can't support that format directly. This patch moves the common code to cogl-texture.c so the virtual is always called with a format that can be downloaded directly by GL and with a valid rowstride. If the download fails then the virtual can return FALSE in which case cogl-texture will use the draw and read fallback. cogl/cogl-atlas-texture.c | 2 +- cogl/cogl-sub-texture.c | 26 ++------ cogl/cogl-texture-2d-sliced.c | 93 ++++------------------------- cogl/cogl-texture-2d.c | 102 ++++---------------------------- cogl/cogl-texture-private.h | 13 +++- cogl/cogl-texture-rectangle.c | 106 ++++---------------------------- cogl/cogl-texture.c | 98 +++++++++++++++++++++++++++++- cogl/winsys/cogl-texture-pixmap-x11.c | 2 +- 8 files changed, 150 insertions(+), 292 deletions(-) commit 0e49e4f204f43b9515650aa88da9da7a62de88ee Author: Neil Roberts Date: Wed Apr 7 11:06:20 2010 +0100 cogl-vertex-buffer: Default to GL_CLAMP_TO_EDGE for point sprites For point sprites you are usually drawing the whole texture so you most often want GL_CLAMP_TO_EDGE. This patch removes the override for COGL_MATERIAL_WRAP_MODE_AUTOMATIC when point sprites are enabled for a layer so that it will clamp to edge. cogl/cogl-material.h | 6 +++- cogl/cogl-vertex-buffer.c | 57 ++++++++++++++++++++++++-------------------- 2 files changed, 35 insertions(+), 28 deletions(-) commit da3be3df6b70efc55d27c757629a5efe9cfaaaad Author: Neil Roberts Date: Mon Mar 22 13:33:55 2010 +0000 cogl-material: Add support for point sprites This adds a new API call to enable point sprite coordinate generation for a material layer: void cogl_material_set_layer_point_sprite_coords_enabled (CoglHandle material, int layer_index, gboolean enable); There is also a corresponding get function. Enabling point sprite coords simply sets the GL_COORD_REPLACE of the GL_POINT_SPRITE glTexEnv when flusing the material. There is no separate application control for glEnable(GL_POINT_SPRITE). Instead it is left permanently enabled under the assumption that it has no affect unless GL_COORD_REPLACE is enabled for a texture unit. http://bugzilla.openedhand.com/show_bug.cgi?id=2047 cogl/cogl-context.c | 14 +++ cogl/cogl-material-private.h | 12 ++- cogl/cogl-material.c | 166 ++++++++++++++++++++++++++++++- cogl/cogl-material.h | 44 ++++++++ cogl/cogl-types.h | 5 +- cogl/driver/gl/cogl-feature-functions.h | 7 ++ cogl/driver/gles/cogl-gles2-wrapper.c | 63 +++++++++--- cogl/driver/gles/cogl-gles2-wrapper.h | 19 +++-- cogl/driver/gles/cogl.c | 3 + doc/reference/cogl/cogl-sections.txt | 2 + 10 files changed, 305 insertions(+), 30 deletions(-) commit 06b58baa10247eacf7a702a5da30ee811069d19a Author: Neil Roberts Date: Mon Mar 22 09:32:17 2010 +0000 cogl-material: Add a property for setting the point size This adds cogl_material_{get,set}_point_size. If the point size is not 1.0f then glPointSize will be called when the material is flushed. http://bugzilla.openedhand.com/show_bug.cgi?id=2047 cogl/cogl-context.c | 2 + cogl/cogl-context.h | 2 + cogl/cogl-material-private.h | 10 ++- cogl/cogl-material.c | 72 ++++++++++++++++++++++++ cogl/cogl-material.h | 33 +++++++++++ cogl/driver/gles/cogl-fixed-vertex-shader.glsl | 6 ++ cogl/driver/gles/cogl-gles2-wrapper.c | 19 ++++++ cogl/driver/gles/cogl-gles2-wrapper.h | 9 +++- doc/reference/cogl/cogl-sections.txt | 2 + 9 files changed, 151 insertions(+), 4 deletions(-) commit dcc8c66fdd88b12cc53ad07fc029068ab8a1187a Author: Robert Bragg Date: Wed Jul 7 20:43:54 2010 +0100 material: support dumping layer state graph to dot file Recently I added a _cogl_debug_dump_materials_dot_file function for debugging the sparse material state. This extends the state dumped to include the graph of layer state also. cogl/cogl-material.c | 133 +++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 110 insertions(+), 23 deletions(-) commit 093251776f56c3065c69c5a397301f84802e3e29 Author: Robert Bragg Date: Wed Jul 7 19:23:57 2010 +0100 material: set ->layer_index on new layers for unit0 We were mistakenly only initializing layer->layer_index for new layers associated with texture units > 0. This had gone unnoticed because normally layers associated with texture unit0 have a layer index of 0 too. Mutter was hitting this issue because it was initializing layer 1 before layer 0 for one of its materials so layer 1 was temporarily associated with texture unit 0. cogl/cogl-material.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit added497f43a6c161ff727122b3e3cefbb43b10c Merge: 0c3354a 0eb9fc0 Author: Emmanuele Bassi Date: Wed Jul 7 16:06:30 2010 +0100 Merge branch 'cally-merge' * cally-merge: cally: Add introspection generation cally: Improving cally doc cally: Cleaning CallyText cally: Refactoring "window:create" and "window:destroy" emission code cally: Use proper backend information on CallyActor cally: Check HAVE_CONFIG_H on cally-util.c docs: Fix Cally documentation cally: Clean up the headers Add binaries of the Cally examples to the ignore file docs: Add Cally API reference Avoid to load cally module on a11y examples Add accessibility tests Initialize accessibility support on clutter_init Rename some methods and includes to avoid -Wshadow warnings Cally initialization code Add Cally commit 0eb9fc04f5a38ab610813ffb930b3d7be44cbf22 Author: Emmanuele Bassi Date: Wed Jul 7 15:57:43 2010 +0100 cally: Add introspection generation Toolkits and applications not written in C might still need access to the Cally API to write accessibility extensions based on it for their own native elements. cogl/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 0c3354acba8be6a628a25f4184fc1f9ec61caabb Author: Robert Bragg Date: Wed Jul 7 14:41:54 2010 +0100 framebuffer: Replace CoglHandle with CoglFramebuffer * One more object converted to stop using CoglHandle re:a8c8cbee513 cogl/cogl-clip-state.c | 16 +++--- cogl/cogl-framebuffer-private.h | 33 ++++++----- cogl/cogl-framebuffer.c | 121 ++++++++++++++++----------------------- cogl/cogl-journal.c | 2 +- cogl/cogl-texture.c | 2 +- cogl/cogl.c | 2 +- cogl/cogl.h | 22 ++++---- 7 files changed, 88 insertions(+), 110 deletions(-) commit 8098052d56e05809732aa1d408a5df4c360f6d92 Author: Robert Bragg Date: Tue Jul 6 20:18:26 2010 +0100 material: route fogging state through CoglMaterial Previously cogl_set_fog would cause a flush of the Cogl journal and would directly bang the GL state machine to setup fogging. As part of the ongoing effort to track most state in CoglMaterial to support renderlists this now adds an indirection so that cogl_set_fog now just updates ctx->legacy_fog_state. The fogging state then gets enabled as a legacy override similar to how the old depth testing API is handled. cogl/cogl-context.c | 3 +- cogl/cogl-context.h | 3 +- cogl/cogl-material-arbfp.c | 2 +- cogl/cogl-material-fixed.c | 48 ++++++++++++++++++++++++++++++++ cogl/cogl-material-private.h | 20 +++++++++++-- cogl/cogl-material.c | 62 ++++++++++++++++++++++++++++++++++++++++++ cogl/cogl.c | 54 +++++++----------------------------- 7 files changed, 143 insertions(+), 49 deletions(-) commit a17dfcf1c26ccab01fc73c4354a986fbfedf117d Author: Robert Bragg Date: Tue Jul 6 01:21:43 2010 +0100 cogl-buffer: Move malloc fallback logic into CoglBuffer Since we'll want to share the fallback logic with CoglVertexArray this moves the malloc based fallback (for when OpenGL doesn't support vertex or pixel buffer objects) into cogl-buffer.c. cogl/cogl-buffer-private.h | 9 +-- cogl/cogl-buffer.c | 201 +++++++++++++++++++++++++++++++++++++------ cogl/cogl-pixel-array.c | 183 ++-------------------------------------- 3 files changed, 182 insertions(+), 211 deletions(-) commit f8d58446a81cde3080665d93784b8fad3048e2cc Author: Robert Bragg Date: Mon Jul 5 23:32:55 2010 +0100 cogl-buffer: consider it an error to free a mapped buffer Explicitly warn if we detect that a CoglBuffer is being freed while it is still mapped. Previously we silently unmapped the buffer, but it's not something we want to encourage. cogl/cogl-buffer.c | 3 +-- cogl/cogl-buffer.h | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) commit e98ee6665bf51c679a1aa55e907cfa8962ef05cb Author: Robert Bragg Date: Mon Jul 5 23:24:34 2010 +0100 cogl-buffer: Track the last used bind target in CoglBuffer This makes CoglBuffer track the last used bind target as a private property. This is later used when binding a buffer to map instead of always using the PIXEL_UNPACK target. This also adds some additional sanity checks that code doesn't try to nest binds to the same target or bind a buffer to multiple targets at the same time. cogl/cogl-buffer-private.h | 23 ++++++++++- cogl/cogl-buffer.c | 86 ++++++++++++++++++++++++++++++++------- cogl/cogl-context.c | 6 ++- cogl/cogl-context.h | 4 +- cogl/cogl-pixel-array-private.h | 1 - cogl/cogl-pixel-array.c | 35 +++++++++------- cogl/cogl-texture.c | 5 +- 7 files changed, 121 insertions(+), 39 deletions(-) commit 7571cc1923a9cbae9797bb70f13d759f7a8a25cd Author: Robert Bragg Date: Tue Jul 6 02:01:24 2010 +0100 cogl: expose the semantic differences of gl/gles2 npot textures This adds three new feature flags COGL_FEATURE_TEXTURE_NPOT_BASIC, COGL_FEATURE_TEXTURE_NPOT_MIPMAP and COGL_FEATURE_TEXTURE_NPOT_REPEAT that can tell you if your hardware supports non power of two textures, npot textures + mipmaps and npot textures + wrap modes other than CLAMP_TO_EDGE. The pre-existing COGL_FEATURE_TEXTURE_NPOT feature implies all of the above. By default GLES 2 core supports npot textures but mipmaps and repeat modes can only be used with power of two textures. This patch also makes GLES check for the GL_OES_texture_npot extension to determine if mipmaps and repeating are supported with npot textures. cogl/cogl-types.h | 21 +++++++++++++++++++-- cogl/driver/gl/cogl.c | 5 ++++- cogl/driver/gles/cogl-feature-functions.h | 10 ++++++++++ cogl/driver/gles/cogl.c | 3 +++ 4 files changed, 36 insertions(+), 3 deletions(-) commit c243086f449634e5273e1137f89fd321ee4686ef Author: Neil Roberts Date: Tue Jul 6 16:08:06 2010 +0100 cogl-vertex-buffer: Fix the #define for glDisableVertexAttribArray glDisableVertexAttribArray was defined to glEnableVertexAttribArray so it would probably cause crashes if it was ever used. Presumably nothing is using these yet because the generic attributes are not yet tied to shader attributes in a predictable way. cogl/cogl-vertex-buffer.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit bf56e798c6094b76fb9734c472b739d1ecc73ff4 Author: Alexandros Frantzis Date: Tue Jul 6 13:24:00 2010 +0100 build: Exclude built sources from the dist http://bugzilla.clutter-project.org/show_bug.cgi?id=2169 Signed-off-by: Emmanuele Bassi cogl/Makefile.am | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 3b4b5ba01cde888c7e824e24bcc5e1b3615e6a39 Author: Robert Bragg Date: Tue Jul 6 01:30:25 2010 +0100 debug: Adds a COGL_DEBUG=disable-pbos debug option For testing purposes, either to identify bugs in Cogl or the driver or simulate lack of PBO support COGL_DEBUG=disable-pbos can be used to fallback to malloc instead. cogl/cogl-debug.c | 2 ++ cogl/cogl-debug.h | 9 +++++---- cogl/cogl.c | 3 +++ 3 files changed, 10 insertions(+), 4 deletions(-) commit 72e1ff05a867fe55a8e66b5f550aca0265916b4c Author: Robert Bragg Date: Sat Jul 3 19:05:04 2010 +0100 pango-render: set CLAMP_TO_EDGE wrap mode on glyph_material The pango renderer was causing lots of override materials to be allocated because the vertex_buffer API converts AUTOMATIC mode into REPEAT for backwards compatibility. By explicitly setting the wrap mode to CLAMP_TO_EDGE when creating the glyph_material then the vertex_buffer API will leave it untouched. pango/cogl-pango-render.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 92d0322766dfb28597894d72a66aa858a84aa66b Author: Robert Bragg Date: Mon Jul 5 16:14:00 2010 +0100 pixel-array: Allow passing of hints to cogl_buffer_map This allows you to tell Cogl that you are planning to replace all the buffer's data once it is mapped with cogl_buffer_map. This means if the buffer is currently being accessed by the GPU then the driver doesn't have to stall and wait for it to finish before it can access it from the CPU and can instead potentially allocate a new buffer with undefined data and map that. cogl/cogl-buffer-private.h | 3 ++- cogl/cogl-buffer.c | 8 +++++--- cogl/cogl-buffer.h | 36 +++++++++++++++++++++++++++++++++--- cogl/cogl-pixel-array.c | 9 ++++++--- 4 files changed, 46 insertions(+), 10 deletions(-) commit 51e4245ce1baf12482a6d9b758a640a79dda2e9b Author: Robert Bragg Date: Sat Jul 3 21:11:33 2010 +0100 cogl-object: cogl_is_XYZ prototype should take void * This changes the cogl_is_XYZ function prototypes generated when using the COGL_OBJECT_DEFINE macro to take a void * argument instead of a CoglHandle argument. cogl/cogl-object-private.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 9e25f8c40de3d6f4d11c5fabe09aba990b2a8e9e Author: Robert Bragg Date: Sun Jul 4 00:49:31 2010 +0100 pixel-array: Only allow allocation of arrays with a 2D size This removes cogl_pixel_array_new which just took a size in bytes. Without the image size and pixel format then the driver often doesn't have enough information to allocate optimal GPU memory that can be textured from directly. This is because GPUs often have ways to spatially alter the layout of a texture to improve cache access patterns which may require special alignment and padding dependant in the images width, height and bpp. Although currently we are limited by OpenGL because it doesn't let us pass on the width and height when allocating a PBO, the hope is that we can define a better extension at some point. cogl/cogl-pixel-array.c | 6 +++--- cogl/cogl-pixel-array.h | 16 ---------------- 2 files changed, 3 insertions(+), 19 deletions(-) commit daa34aeb0e8b3c124df1e8f2c87d1070ebb32933 Author: Robert Bragg Date: Sun Jul 4 00:45:12 2010 +0100 pixel-array: rename new_from_size to new_with_size It is more in keeping with other coding conventions in Cogl to use new "with" size instead of new "from" size. cogl/cogl-pixel-array.c | 8 ++++---- cogl/cogl-pixel-array.h | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) commit a46cc22c1bf30dbacdc2a86ac84161f2c048a7f5 Author: Robert Bragg Date: Sun Jul 4 00:18:10 2010 +0100 cogl-buffer-private.h: cleanup up the coding style This file was following the Clutter coding style of arranging prototypes into columns which Cogl doesn't copy. cogl/cogl-buffer-private.h | 42 +++++++++++++++++++++++++----------------- 1 files changed, 25 insertions(+), 17 deletions(-) commit 521d9ca2034a679be753ec7163f779547d73189b Author: Robert Bragg Date: Sat Jul 3 23:46:03 2010 +0100 rename CoglPixelBuffer to CoglPixelArray This renames CoglPixelBuffer to CoglPixelArray to be consistent with the new CoglVertexArray API. cogl/Makefile.am | 6 +- cogl/cogl-buffer.c | 2 +- cogl/cogl-pixel-array-private.h | 74 +++++++++ cogl/cogl-pixel-array.c | 324 ++++++++++++++++++++++++++++++++++++++ cogl/cogl-pixel-array.h | 147 +++++++++++++++++ cogl/cogl-pixel-buffer-private.h | 73 --------- cogl/cogl-pixel-buffer.c | 323 ------------------------------------- cogl/cogl-pixel-buffer.h | 146 ----------------- cogl/cogl-texture.c | 14 +- cogl/cogl.h | 2 +- 10 files changed, 557 insertions(+), 554 deletions(-) commit cafeb025313b02472ddaeb5499d84acbb6068264 Author: Robert Bragg Date: Sat Jul 3 21:30:33 2010 +0100 cogl-buffer: make the COGL_BUFFER_USAGE_HINT private The usage hint should be implied by the CoglBuffer subclass type so the public getter and setter APIs for manually changing the usage hint of a CoglBuffer have now been removed. cogl/cogl-buffer-private.h | 9 +++++++++ cogl/cogl-buffer.c | 22 ---------------------- cogl/cogl-buffer.h | 44 -------------------------------------------- 3 files changed, 9 insertions(+), 66 deletions(-) commit 9ceb0edf26654f259eab4be640db491d9b3948a4 Author: Robert Bragg Date: Sat Jul 3 23:56:44 2010 +0100 cogl-buffer: Handle subclass registration like cogl-texture Instead of having to extend cogl_is_buffer with new buffer types manually this now adds a new COGL_BUFFER_DEFINE macro to be used instead of COGL_OBJECT_DEFINE for CoglBuffer subclasses. This macro will automatically register the new type with ctx->buffer_types which will iterated by cogl_is_buffer. This is the same coding pattern used for CoglTexture. cogl/cogl-buffer-private.h | 12 ++++++++++++ cogl/cogl-buffer.c | 28 +++++++++++++++++++++++++--- cogl/cogl-context.c | 2 ++ cogl/cogl-context.h | 4 ++++ cogl/cogl-pixel-buffer.c | 2 +- 5 files changed, 44 insertions(+), 4 deletions(-) commit 1b7e362189654db241c927be3f795d90f75ef84d Author: Robert Bragg Date: Sat Jul 3 20:24:36 2010 +0100 pixel-buffer: Replace CoglHandle with CoglPixelBuffer * One more file converted to stop using CoglHandle re:a8c8cbee513 cogl/cogl-buffer-private.h | 5 +++-- cogl/cogl-pixel-buffer-private.h | 4 ++-- cogl/cogl-pixel-buffer.c | 26 +++++++++++++------------- cogl/cogl-pixel-buffer.h | 18 ++++++++++-------- 4 files changed, 28 insertions(+), 25 deletions(-) commit 12a76ca4aa796d74e7fdd8459d0d3a8ba3470bba Author: Robert Bragg Date: Fri Jul 2 18:04:45 2010 +0100 cogl-material: Adds debug api to dump sparse material graph This adds a _cogl_debug_dump_materials_dot_file function that can be used to dump all the descendants of the default material to a file using the dot format which can then be converted to an image to visualize. cogl/cogl-material.c | 165 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 165 insertions(+), 0 deletions(-) commit b5f7ab345cb74a5c1fd73a781ff3a8c1db2d75f4 Author: Robert Bragg Date: Sun Jul 4 02:44:37 2010 +0100 cogl-vertex-buffer.h: #include cogl-vertex-buffer.h was assuming that the platforms GL headers had already been included but that shouldn't have to be the case. cogl/cogl-vertex-buffer.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 0b3c45396b2b4062b3104b1657bed99ba9874ea4 Author: Robert Bragg Date: Sat Jul 3 21:10:05 2010 +0100 cogl-object-private.h: #include glib.h and cogl-types.h cogl-object-private.h was only working in places that had already included glib.h and cogl-types.h cogl/cogl-object-private.h | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit cc0b76b405a3e8855efde8ca2ee34fa2e6c227ed Author: Robert Bragg Date: Sat Jul 3 18:44:47 2010 +0100 material: don't keep extra ref on copy-on-write materials In _cogl_material_pre_change_notify if a material with descendants is modified then we create a new material that is a copy of the one being modified and reparent those descendants to the new material. This patch ensures we drop the reference we get from cogl_material_copy since we can rely on the descendants to keep the new material alive. cogl/cogl-material.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 3428633cb30159bdfd3671e6834a4a9792fe8246 Author: Robert Bragg Date: Fri Jul 2 01:07:36 2010 +0100 build: Fix GLES builds since the material backend split The commit to split the fragment processing backends out from cogl-material.c (3e1323a6362906a95) broke the GLES 1 and 2 builds the fix was to guard the code in each backend according to the COGL_MATERIAL_BACKEND_XYZ defines which are setup in cogl-material-private.h. cogl/cogl-material-arbfp.c | 7 ++++++- cogl/cogl-material-fixed.c | 7 ++++++- cogl/cogl-material-glsl.c | 7 ++++++- cogl/cogl-material-private.h | 2 ++ 4 files changed, 20 insertions(+), 3 deletions(-) commit be6335c87062b629bf228c0b7f53cbbef3f86261 Author: Emmanuele Bassi Date: Fri Jul 2 17:48:19 2010 +0100 docs: Add a cogl-paths section The path primitives have a specific section, now, and gtk-doc is loudly complaining about it being defined but not referenced. doc/reference/cogl/cogl-docs.xml.in | 1 + doc/reference/cogl/cogl-sections.txt | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) commit cea74d92ea4e053531743cb50eef03015d0d57ac Author: Neil Roberts Date: Fri Jul 2 16:19:48 2010 +0100 Convert the ASCII art documentation in cogl-vertex-buffer to PNGs The documentation for cogl_vertex_buffer_indices_get_for_quads was using ugly ASCII art to draw the diagrams. These have now been replaced with PNG figures. cogl/cogl-vertex-buffer.h | 35 ++++++++++--------------- doc/reference/cogl/Makefile.am | 4 +++ doc/reference/cogl/quad-indices-order.png | Bin 0 -> 2620 bytes doc/reference/cogl/quad-indices-triangles.png | Bin 0 -> 8018 bytes 4 files changed, 18 insertions(+), 21 deletions(-) commit 432c37bd21abf357e28e64b4a337c06c71b2bd32 Author: Neil Roberts Date: Fri Jul 2 13:49:34 2010 +0100 Add CoglMaterialWrapMode to the Cogl docs and fix docs for the getters CoglMaterialWrapMode was missing from the cogl-sections.txt file so it wasn't getting displayed. There were also no documented return values from the getters. cogl/cogl-material.h | 4 ++++ doc/reference/cogl/cogl-sections.txt | 1 + 2 files changed, 5 insertions(+), 0 deletions(-) commit 59d06d486d599525c4b301941b8a913cbf088da9 Author: Neil Roberts Date: Thu Jul 1 20:34:59 2010 +0100 Fix building the tesselator code for GLES The tesselator code uses some defines that it expects to be in the GL headers such as GLAPI and GLAPIENTRY. These are used to mark the entry points as exportable on each platform. We don't really want the tesselator code to use these but we also don't want to modify the C files so instead they are #defined to be empty in the stub glu.h. That header is only included internally when building the tesselator/ files so it shouldn't affect the rest of Cogl. GLES also doesn't have a GLdouble type so we just #define this to be a regular double. cogl/cogl-path.c | 4 ++-- cogl/tesselator/GL/glu.h | 14 ++++++++++++++ cogl/tesselator/tesselator.h | 30 +++++++++++++++--------------- 3 files changed, 31 insertions(+), 17 deletions(-) commit 7961b1c93dab6b334ce1d4dfdb6e2d1cb0f45d46 Author: Neil Roberts Date: Thu Jul 1 15:27:03 2010 +0100 cogl-material: Don't doubly ref the parent in cogl_material_copy cogl_material_copy was taking a reference on the original texture when making a copy. However it then calls _cogl_material_set_parent on the material which also takes a reference on the parent. The second reference is cleaned up whenever _cogl_material_unparent is called and this is also called by _cogl_material_free. However, it seems that nothing was cleaning up the first reference. I think the reference is entirely unnecessary so this patch removes it. cogl/cogl-material.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) commit 137d38962a9a5c14f4432dbf52cc98880d9d305a Author: Robert Bragg Date: Thu Jul 1 12:21:25 2010 +0100 cogl: don't include cogl-vector.h twice in cogl.h cogl-vector.h should only be included by cogl.h when COGL_ENABLE_EXPERIMENTAL_API is defined. This removes the unguarded duplicate include. cogl/cogl.h | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit 1000c80444a3d99d0965632a571b9ae19cb8d048 Author: Robert Bragg Date: Wed Jun 30 18:06:04 2010 +0100 cogl: declare experimental symbols consistently We had several different ways of exposing experimental API, in one case the symbols had no special suffix, in two other ways the symbols were given an _EXP suffix but in different ways. This makes all experimental API have an _EXP suffix which is handled using #defines in the header so the prototypes in the .c and .h files don't have the suffix. The documented reason for the suffix is so that anyone watching Cogl for ABI changes who sees symbols disappear will hopefully understand what's going on. cogl/cogl-buffer.c | 32 ++++++------- cogl/cogl-buffer.h | 67 +++++++-------------------- cogl/cogl-pixel-buffer.c | 82 ++++++--------------------------- cogl/cogl-pixel-buffer.h | 47 +++++-------------- cogl/cogl-vector.h | 22 +++++++++ cogl/winsys/cogl-texture-pixmap-x11.h | 56 ++++++----------------- 6 files changed, 96 insertions(+), 210 deletions(-) commit a0a06f0342d3acee95cd4927534fdd5affe46b5c Author: Neil Roberts Date: Wed Jun 30 15:51:52 2010 +0100 cogl/tesselator: Update to the latest code from GLU This grabs the latest code for libtess from git Mesa. This is mostly so that we can get the following commit which fixes a lot of compiler warnings in Clutter: commit 75acb896c6da758d03e86f8725d6ca0cb2c6ad82 Author: Neil Roberts Date: Wed Jun 30 12:41:11 2010 +0100 glu: Fix some compiler warnings in libtess When compiled with the more aggressive compiler warnings such as -Wshadow and -Wempty-body the libtess code gives a lot more warnings. This fixes the following issues: * The 'Swap' macro tries to combine multiple statements into one and then consume the trailing semicolon by using if(1){/*...*/}else. This gives warnings because the else part ends up with an empty statement. It also seems a bit dangerous because if the semicolon were missed then it would still be valid syntax but it would just ignore the following statement. This patch replaces it with the more common idiom do { /*...*/ } while(0). * 'free' was being used as a local variable name but this shadows the global function. This has been renamed to 'free_handle' * TRUE and FALSE were being unconditionally defined. Although this isn't currently a problem it seems better to guard them with #ifndef because it's quite common for them to be defined in other headers. https://bugs.freedesktop.org/show_bug.cgi?id=28845 cogl/tesselator/geom.c | 2 +- cogl/tesselator/mesh.c | 4 ++++ cogl/tesselator/normal.c | 4 ++++ cogl/tesselator/priorityq-heap.c | 22 +++++++++++++--------- cogl/tesselator/priorityq.c | 2 +- cogl/tesselator/render.c | 8 ++++++-- cogl/tesselator/sweep.c | 4 ++++ cogl/tesselator/tess.c | 4 ++++ 8 files changed, 37 insertions(+), 13 deletions(-) commit 6fbe92193f85307ba1f0a473c8f242d07bb1f90d Author: Emmanuele Bassi Date: Wed Jun 30 15:50:47 2010 +0100 docs: Various fixes for gtk-doc cogl/cogl.h | 10 +++++----- doc/reference/cogl/Makefile.am | 12 ++++++------ 2 files changed, 11 insertions(+), 11 deletions(-) commit be46b872e9dc962c0cd2c44275e2a39a1de2eedf Author: Robert Bragg Date: Tue Jun 22 14:02:17 2010 +0100 material: Replace CoglHandle with CoglMaterial * As part of the ongoing effort to remove CoglHandle from the API this switches the cogl_material API to use a strongly typed CoglMaterial pointer instead of CoglHandle. cogl/cogl-context.h | 10 +- cogl/cogl-material-private.h | 46 ++--- cogl/cogl-material.c | 435 ++++++++++++++++++------------------------ cogl/cogl-material.h | 270 ++++++++++++++------------ 4 files changed, 349 insertions(+), 412 deletions(-) commit 17731b3af1def4981404db85d244e3c8fbd9d29b Author: Robert Bragg Date: Tue Jun 15 16:44:52 2010 +0100 material: Split the fragment processing backends out This splits the fragment processing backends (glsl, arbfp and fixed) out from cogl-material.c into their own cogl-material-{glsl,arbfp,fixed}.c files in an effort to help and keep cogl-material.c maintainable. cogl/Makefile.am | 6 + cogl/cogl-material-arbfp-private.h | 36 + cogl/cogl-material-arbfp.c | 1029 ++++++++++++++++++++++++++++ cogl/cogl-material-fixed-private.h | 36 + cogl/cogl-material-fixed.c | 201 ++++++ cogl/cogl-material-glsl-private.h | 36 + cogl/cogl-material-glsl.c | 123 ++++ cogl/cogl-material-private.h | 83 +++- cogl/cogl-material.c | 1309 ++---------------------------------- 9 files changed, 1587 insertions(+), 1272 deletions(-) commit e7df75773959a6a11931ef7b0e75d4a8cc6d066e Author: Robert Bragg Date: Wed Jun 30 03:31:37 2010 +0100 material: remove a duplicate gtk-doc "Since: 1.4" The cogl_material_get_depth_writing_enabled documentation had two "Since: 1.4" annotations which was confusing the gobject introspection scanner. cogl/cogl-material.h | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit cdf5b222db4067f99ce4dd21b36d6faf113a2db9 Author: Neil Roberts Date: Wed Jun 23 13:40:43 2010 +0100 cogl-path: Allow changing the fill rule This adds two new API calls- cogl_path_set_fill_rule and cogl_path_get_fill_rule. This allows modifying the fill rule of the current path. In addition to the previous default fill rule of 'even-odd' it now supports the 'non-zero' rule. The fill rule is a property of the path (not the Cogl context) so creating a new path or preserving a path with cogl_path_get_handle affects the fill rule. cogl/cogl-path-private.h | 3 + cogl/cogl-path.c | 38 ++++++++++++ cogl/cogl-path.h | 88 +++++++++++++++++++++++----- doc/reference/cogl/Makefile.am | 6 +- doc/reference/cogl/cogl-sections.txt | 3 + doc/reference/cogl/fill-rule-even-odd.png | Bin 0 -> 3121 bytes doc/reference/cogl/fill-rule-non-zero.png | Bin 0 -> 3143 bytes doc/reference/cogl/fill-rule.png | Bin 3121 -> 0 bytes 8 files changed, 120 insertions(+), 18 deletions(-) commit 244a795f43cf2d448b2f41143e57f80ecff7a75a Author: Neil Roberts Date: Mon Apr 19 11:24:24 2010 +0100 cogl-debug: Remove the force-scanline-paths option The scanline path rasterizer has been removed because the paths can be drawn with the tesselator instead. The option therefore no longer does anything. cogl/cogl-debug.c | 2 -- cogl/cogl-debug.h | 1 - 2 files changed, 0 insertions(+), 3 deletions(-) commit fecaaea132ca2cfe449bd765035a8217c061caa8 Author: Neil Roberts Date: Thu Apr 15 23:56:46 2010 +0100 cogl-path: Use the GLU tesselator to draw paths Instead of drawing paths using the stencil buffer trick, it now tesselates the path into triangles using the GLU tesselator and renders them directly. A vbo is created with one vertex for each node on the path. The tesselator is used to generate a series of indices into the vbo as triangles. The tesselator's output of strips and fans is converted into GL_TRIANGLES so that it can be rendered with a single draw call (but the vertices are still shared via the indices). The vbo is stored with the path so that if the application uses retained paths then Cogl won't have to tessellate again. The vertices also have texture coordinates associated with them so that it can replicate the old behaviour of drawing a material with a texture by fitting the texture to the bounding box of the path and then clipping it. However if the texture contains waste or is sliced then the vertex buffer code will refuse to draw it. In this case it will revert back to drawing the path into the stencil buffer and then drawing the material as a clipped quad. The VBO is used even when setting up the stencil buffer for clipping to a path because the tessellated geometry may cover less area. The old scanline rasterizer has been removed because the tesselator should work equally well on drivers with no stencil buffer. cogl/cogl-path-private.h | 5 + cogl/cogl-path.c | 737 ++++++++++++++++++++++++++++----------------- 2 files changed, 463 insertions(+), 279 deletions(-) commit b86e33095757333dd7b2eabdb8c23113135275b1 Author: Neil Roberts Date: Fri Apr 16 00:28:15 2010 +0100 cogl: Pull in the code for GLU tesselator from Mesa/SGI This copies the files for the GLU tesselator from Mesa. The Mesa code is based on the original SGI code and is released under a BSD license. The memalloc.h header has been replaced with one that forces the code to use g_malloc and friends. The rest of the files are not altered from the original so it should be possible to later upgrade the files by simply overwriting them. There is a tesselator.h header which is expected to be included by rest of Cogl to use the tesselator. This contains a trimmed down version of glu.h that only includes parts that pertain to the tesselator. There is also a stub glu.h in the GL directory which is just provided so that the tesselator code can include without depending on the system header. It just redirects to tesselator.h cogl/Makefile.am | 7 +- cogl/tesselator/GL/glu.h | 26 + cogl/tesselator/Makefile.am | 41 ++ cogl/tesselator/README | 446 +++++++++++++ cogl/tesselator/dict-list.h | 100 +++ cogl/tesselator/dict.c | 111 ++++ cogl/tesselator/dict.h | 100 +++ cogl/tesselator/geom.c | 264 ++++++++ cogl/tesselator/geom.h | 84 +++ cogl/tesselator/gluos.h | 1 + cogl/tesselator/memalloc.h | 42 ++ cogl/tesselator/mesh.c | 794 ++++++++++++++++++++++ cogl/tesselator/mesh.h | 266 ++++++++ cogl/tesselator/normal.c | 253 +++++++ cogl/tesselator/normal.h | 45 ++ cogl/tesselator/priorityq-heap.c | 252 +++++++ cogl/tesselator/priorityq-heap.h | 107 +++ cogl/tesselator/priorityq-sort.h | 117 ++++ cogl/tesselator/priorityq.c | 260 ++++++++ cogl/tesselator/priorityq.h | 117 ++++ cogl/tesselator/render.c | 498 ++++++++++++++ cogl/tesselator/render.h | 52 ++ cogl/tesselator/sweep.c | 1357 ++++++++++++++++++++++++++++++++++++++ cogl/tesselator/sweep.h | 77 +++ cogl/tesselator/tess.c | 628 ++++++++++++++++++ cogl/tesselator/tess.h | 165 +++++ cogl/tesselator/tesselator.h | 121 ++++ cogl/tesselator/tessmono.c | 201 ++++++ cogl/tesselator/tessmono.h | 71 ++ 29 files changed, 6601 insertions(+), 2 deletions(-) commit d99a8bf694072a3230c210206b94bf1983436153 Author: Neil Roberts Date: Mon Jun 28 15:25:19 2010 +0100 cogl: Add const to some pointer arguments Some of the arguments to the material and path functions were taking a pointer to a CoglColor or an array of floats that was not intended to be written to but were not marked with const. cogl/cogl-material.c | 6 +++--- cogl/cogl-material.h | 14 +++++++------- cogl/cogl-path.c | 4 ++-- cogl/cogl-path.h | 8 ++++---- 4 files changed, 16 insertions(+), 16 deletions(-) commit de1f4885ddb1eb510bc9796a008f7a38a105e598 Author: Robert Bragg Date: Wed Jun 23 17:10:03 2010 +0100 material: Avoid possibly reading invalid memory in _cogl_material_prune_empty_layer_difference we sometimes unref the given layer before dereferencing it to get a pointer to its parent. This defers the unref until after we have fetched the parent pointer. cogl/cogl-material.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit e33a94bff474d192b74a9e25868950b967a9a98a Author: Neil Roberts Date: Wed Jun 23 17:29:08 2010 +0100 cogl: Remove cogl-defines.h.in from the driver make files Commit 7fae8ac051292 changed cogl-defines.h.in so there is only a single copy in clutter/cogl/ instead of one for each driver. However the old files were still mentioned in the EXTRA_DIST of the Makefile.am so make distcheck was failing. cogl/Makefile.am | 2 ++ cogl/driver/gl/Makefile.am | 2 +- cogl/driver/gles/Makefile.am | 1 - 3 files changed, 3 insertions(+), 2 deletions(-) commit e8e5188484bf700af9dc3dc657c40988d4c309b1 Author: Chris Lord Date: Wed Jun 23 15:53:50 2010 +0100 cogl-path: Disable texture coord arrays before drawing It was possible that the texture co-ord arrays were left enabled during stroking, which could possibly cause a crash. cogl/cogl-path.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 857aee2b91e0e01d13251dd6658b4016a78b10ad Author: Robert Bragg Date: Tue Jun 22 15:42:41 2010 +0100 texture-pixmap-x11: don't assume anything about the GLXFBConfig type A pedantic change to get_fbconfig_for_depth() so that we don't need to make any assumptions about the GLXFBConfig typedef or what values we can overload to indicate an invalid config. get_fbconfig_for_depth() now simply returns FALSE if it fails to find a config. cogl/winsys/cogl-context-winsys.h | 1 + cogl/winsys/cogl-texture-pixmap-x11.c | 37 ++++++++++++++++----------------- 2 files changed, 19 insertions(+), 19 deletions(-) commit c0d42cb0213497de082e1ed4b7d53c31fca704c5 Author: Emmanuele Bassi Date: Tue Jun 22 14:43:36 2010 +0100 Silence another compiler warning cogl/winsys/cogl-texture-pixmap-x11.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 7d206ccdbb93852871047454dca2af27462b0a49 Author: Neil Roberts Date: Tue Jun 22 14:10:44 2010 +0100 cogl-texture-pixmap-x11: Use NULL instead of None for invalid GLXFBConfig GLXFBConfigs are opaque pointers not XIDs so it doesn't make sense to return None from get_fbconfig_for_depth. Instead it now returns NULL. cogl/winsys/cogl-texture-pixmap-x11.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 0244eccfe31e0dba9d3ba9902e97bf72a9e81702 Author: Emmanuele Bassi Date: Tue Jun 22 13:48:53 2010 +0100 Silence some compiler warnings cogl/cogl-material.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) commit 8458fb7e200ea0ea71b84598aea64e5a1e1bbb45 Author: Neil Roberts Date: Tue May 25 18:56:14 2010 +0100 Add a CoglTexturePixmapX11 texture backend This is a publicly exposed texture backend to create a texture which contains the contents of an X11 pixmap. The API is currently marked as experimental. The backend internally holds a handle to another texture. All of the backend virtuals simply redirect to the internal texture. The texture can optionally be automatically updated if the automatic_updates parameter is TRUE. If set then Cogl will listen for damage events on the pixmap and update the texture accordingly. Alternatively a damage object can be created externally and passed down to Cogl. The updates can be performed with XGetImage, XShmGetImage or the GLX_EXT_texture_pixmap extension. If the TFP extension is used it will optionally try to create a rectangle texture if the driver does not support NPOTs or it is forced through the COGL_PIXMAP_TEXTURE_RECTANGLE or CLUTTER_PIXMAP_TEXTURE_RECTANGLE environment variables. If the GLXFBConfig does not support mipmapping then it will fallback to using X{Shm,}GetImage. It keeps a separate texture around for this so that it can later start using the TFP texture again if the texture is later drawn with mipmaps disabled. cogl/Makefile.am | 7 +- cogl/cogl-debug.c | 4 +- cogl/cogl-debug.h | 3 +- cogl/winsys/cogl-context-winsys.c | 26 +- cogl/winsys/cogl-context-winsys.h | 40 +- cogl/winsys/cogl-texture-pixmap-x11-private.h | 92 ++ cogl/winsys/cogl-texture-pixmap-x11.c | 1397 +++++++++++++++++++++++++ cogl/winsys/cogl-texture-pixmap-x11.h | 176 ++++ cogl/winsys/cogl-winsys-feature-functions.h | 20 + 9 files changed, 1758 insertions(+), 7 deletions(-) commit 9c62265939e3a097cdc0da7b40e65608cc863ec9 Author: Neil Roberts Date: Mon Jun 21 12:48:02 2010 +0100 Add -DCOGL_ENABLE_EXPERIMENTAL_API to Makefiles for Cogl and x11/glx Cogl and Clutter should be able to use the experimental API so this adds the required define to the CPPFLAGS in the Makefiles. cogl/Makefile.am | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 9d0962098f44a06565afe1a3e5435f21a8c5352d Author: Neil Roberts Date: Fri Jun 18 14:30:23 2010 +0100 cogl-defines.h: Add a COGL_HAS_X11 define This will be defined in cogl-defines.h whenever Cogl is built using a winsys that supports X11. This implies CoglTexturePixmapX11 will be available. To make this work the two separate cogl-defines.h.in files have been merged into one. The configure script now makes a @COGL_DEFINES@ substitution variable which contains the #define lines to put in rather than directly having them in the seperate files. cogl/Makefile.am | 3 -- cogl/cogl-defines.h.in | 36 +++++++++++++++++++++++++++++++ cogl/driver/gl/cogl-defines.h.in | 37 -------------------------------- cogl/driver/gles/cogl-defines.h.in | 41 ------------------------------------ 4 files changed, 36 insertions(+), 81 deletions(-) commit 16c7d12e6c3ffe251ebc80463727b1074d8bdd59 Author: Neil Roberts Date: Fri Jun 4 10:38:30 2010 +0100 cogl: Add _cogl_xlib_{,un}trap_errors This is similar to clutter_x11_{,un}trap_errors except that it stores the previous trap state in a caller-allocated struct so that it can be re-entrant. Make _cogl_xlib_trap_errors re-entrant (this will be squashed into an earlier commit) cogl/winsys/cogl-context-winsys.c | 2 + cogl/winsys/cogl-context-winsys.h | 23 +++++++++++++++++++++ cogl/winsys/cogl-xlib.c | 39 +++++++++++++++++++++++++++++++++++++ cogl/winsys/cogl-xlib.h | 29 +++++++++++++++++++++++++++ 4 files changed, 93 insertions(+), 0 deletions(-) commit 6ad668c76b126efec977b09c8796f245f73b85cb Author: Neil Roberts Date: Tue Jun 1 13:32:57 2010 +0100 cogl-texture: Avoid premult conversion if the dst format has no alpha The _cogl_texture_needs_premult_conversion function was already checking whether the source format had an alpha channel before returning TRUE, but it also doesn't make sense to do the premult conversion if the destination format has no alpha. This patch adds that check in too. cogl/cogl-texture.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 31b5beb2c00bfae83d6cd26e33242887f330e0bd Author: Neil Roberts Date: Wed Jun 2 17:55:56 2010 +0100 cogl: Add the infrastructure for checking for winsys extensions This adds the framework needed to check for winsys specific extensions (such as GLX extensions) using a similar mechanism to the cogl-feature-functions header. There is a separate cogl-winsys-feature-functions header which will contain macros to list the extensions and functions. cogl_create_context_winsys now calls _cogl_feature_check for each of these functions. _cogl_feature_check has had to be changed to accept the driver prefix as the first parameter so that it can prepend "GLX" rather than "GL" in this case. cogl/Makefile.am | 1 + cogl/cogl-feature-private.c | 7 ++- cogl/cogl-feature-private.h | 3 +- cogl/driver/gl/cogl.c | 2 +- cogl/driver/gles/cogl.c | 2 +- cogl/winsys/cogl-context-winsys.c | 64 +++++++++++++++++++++++++++ cogl/winsys/cogl-context-winsys.h | 21 ++++++++- cogl/winsys/cogl-winsys-feature-functions.h | 25 ++++++++++ 8 files changed, 118 insertions(+), 7 deletions(-) commit 9646e85ba77d7ffe5059b4cea1616a79f7fe5f52 Author: Neil Roberts Date: Wed May 19 16:13:07 2010 +0100 Pass all Xlib events through Cogl The Clutter X11 backend now passes all events through _cogl_xlib_handle_event. This function can now internally be hooked with _cogl_xlib_add_filter. These are added to a list of callbacks which are all called in turn by _cogl_xlib_handle_event. This is intended to be used internally in Cogl by any parts that need to see Xlib events. Cogl now also has an internally exposed function to set a pointer to the Xlib display. This is stored in a global variable. The Clutter X11 backend sets this. _cogl_xlib_handle_event and _cogl_xlib_set_display can be removed once Cogl gains a proper window system abstraction. cogl/Makefile.am | 11 +++-- cogl/cogl-internal.h | 52 +++++++++++++++++++++++++ cogl/winsys/cogl-context-winsys.c | 20 ++++++++++ cogl/winsys/cogl-context-winsys.h | 7 +++ cogl/winsys/cogl-xlib.c | 77 +++++++++++++++++++++++++++++++++++++ cogl/winsys/cogl-xlib.h | 37 ++++++++++++++++++ 6 files changed, 200 insertions(+), 4 deletions(-) commit 2e5b4a5b81d92909ad90e554c57c94b7c3f82f57 Author: Neil Roberts Date: Wed Jun 2 15:16:14 2010 +0100 cogl: Add a struct for winsys-specific data to CoglContext This creates a separate struct to store the fields of the context that are specific to the winsys. This is all stored in one file but ideally this could work more like the CoglContextDriver struct and have a different header for each winsys. cogl/Makefile.am | 2 + cogl/cogl-context.c | 8 +++++++ cogl/cogl-context.h | 2 + cogl/winsys/cogl-context-winsys.c | 38 +++++++++++++++++++++++++++++++++++++ cogl/winsys/cogl-context-winsys.h | 32 +++++++++++++++++++++++++++++++ 5 files changed, 82 insertions(+), 0 deletions(-) commit 9a1aa08fda8983420e543056ed8e54397058486e Author: Neil Roberts Date: Thu Jun 10 15:33:34 2010 +0100 cogl: Add an internal CoglTextureRectangle backend This adds an internal rectangle texture backend which is mostly based on the CoglTexture2D backend. It will throw assert failures if any operations are attempted that rectangle textures don't support, such as mipmapping or hardware repeating. cogl/Makefile.am | 2 + cogl/cogl-texture-rectangle-private.h | 68 ++++ cogl/cogl-texture-rectangle.c | 662 +++++++++++++++++++++++++++++++ cogl/driver/gl/cogl-feature-functions.h | 7 + cogl/driver/gl/cogl-texture-driver.c | 41 ++- 5 files changed, 763 insertions(+), 17 deletions(-) commit 82e63a47536e6151e3678df8ac4e47935683b7c8 Author: Neil Roberts Date: Wed Jun 9 17:39:59 2010 +0100 cogl-texture: Replace the ensure_mipmaps virtual with pre_paint Instead of the ensure_mipmaps virtual that is only called whenever the texture is about to be rendered with a min filter that needs the mipmap, there is now a pre_paint virtual that is always called when the texture is about to be painted in any way. It has a flags parameter which is used to specify whether the mipmap will be needed. This is useful for CoglTexturePixmapX11 because it needs to do stuff before painting that is unrelated to mipmapping. cogl/cogl-atlas-texture.c | 13 +++++++------ cogl/cogl-material-private.h | 7 ++++--- cogl/cogl-material.c | 33 ++++++++++++++++----------------- cogl/cogl-primitives.c | 4 ++-- cogl/cogl-sub-texture.c | 7 ++++--- cogl/cogl-texture-2d-sliced.c | 9 +++++++-- cogl/cogl-texture-2d.c | 27 ++++++++++++++------------- cogl/cogl-texture-private.h | 12 ++++++++++-- cogl/cogl-texture.c | 4 ++-- cogl/cogl-vertex-buffer.c | 2 +- 10 files changed, 67 insertions(+), 51 deletions(-) commit ebb05bcb64ca1799ce12e8262a58169e3acd79cb Author: Neil Roberts Date: Fri Jun 11 13:50:36 2010 +0100 cogl-texture: List texture subclass types rather than hardcoding them Instead of having a hardcoded series of if-statements in cogl_is_texture to determine which types should appear as texture subclasses, they are now stored in a GSList attached to the Cogl context. The list is amended to using a new cogl_texture_register_type function. There is a convenience macro called COGL_TEXTURE_DEFINE which uses COGL_HANDLE_DEFINE_WITH_CODE to register the texture type when the _get_type() function is first called. cogl/cogl-atlas-texture.c | 2 +- cogl/cogl-context.c | 4 ++++ cogl/cogl-context.h | 4 ++++ cogl/cogl-sub-texture.c | 2 +- cogl/cogl-texture-2d-sliced.c | 2 +- cogl/cogl-texture-2d.c | 2 +- cogl/cogl-texture-private.h | 11 +++++++++++ cogl/cogl-texture.c | 21 +++++++++++++++++---- 8 files changed, 40 insertions(+), 8 deletions(-) commit 2f286446af5cf80eb5c43083f76fce6468e54d1f Author: Neil Roberts Date: Fri Jun 11 13:44:27 2010 +0100 Add COGL_{OBJECT,HANDLE}_DEFINE_WITH_CODE This macro is similar to COGL_HANDLE_DEFINE_WITH_CODE except that it allows a snippet of code to be inserted into the _get_type() function. This is similar to how G_DEFINE_TYPE_WITH_CODE works. COGL_HANDLE_DEFINE is now just a wrapper around COGL_HANDLE_DEFINE_WITH_CODE. cogl/cogl-object-private.h | 17 +++++++++++++---- 1 files changed, 13 insertions(+), 4 deletions(-) commit f9f2f6bc6c91c5f554617fb1a0b57340d7875d9d Author: Neil Roberts Date: Thu Jun 3 15:06:47 2010 +0100 Add _cogl_texture_2d_externally_modified _cogl_texture_2d_externally_modified is a function specific to the CoglTexture2D texture backend that should be called whenever the contents of the texture are modified without the backend knowing about it. It simply marks the mipmap tree as invalid. cogl/cogl-texture-2d-private.h | 11 +++++++++++ cogl/cogl-texture-2d.c | 9 +++++++++ 2 files changed, 20 insertions(+), 0 deletions(-) commit 5a5b3914baef4e9664068f91987f964de799ee93 Author: Neil Roberts Date: Wed Jun 2 15:01:18 2010 +0100 cogl: Fix the include path in driver/*/Makefile.am The include path for the winsys and driver folder was given relative to $(srcdir) so it would end up relative to the driver folder which is wrong. It is now specified as $(srcdir)/../../winsys to get the right location. The driver folder is removed because it is actually just $(srcdir) and that is already included. cogl/driver/gl/Makefile.am | 3 +-- cogl/driver/gles/Makefile.am | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) commit 0e43647fedeea6ead91a98a589783666f4701525 Author: Robert Bragg Date: Tue Jun 8 18:38:25 2010 +0100 gles2: don't disable clip planes for GLES2 GLES2 doesn't provide user clip planes (you would have to use a vertex + fragment shader to achieve the same kind of result) so we make sure not to call glEnable/Disable with any of the GL_CLIP_PLANE0..3 defines. http://bugzilla.o-hand.com/show_bug.cgi?id=2177 cogl/cogl-clip-stack.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 9234757c3591f19e2bbc3d2964f049b6879a972d Author: Robert Bragg Date: Tue Jun 22 11:21:09 2010 +0100 material: fix a typo in _cogl_material_journal_unref The function had a line like: CoglMaterial *material = material = _cogl_material_pointer_from_handle (material_handle); where the duplicate "material =" wasn't intended, so this patch removes it. cogl/cogl-material.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit c8aae9a663f46e572da5f124f56c291f1db26353 Author: Robert Bragg Date: Fri Jun 18 04:38:43 2010 +0100 egl: Consolidates eglx and eglnative into one "egl" winsys This remove quite a lot of redundant code by consolidating the eglx and eglnative window system backends. cogl/Makefile.am | 4 ++-- cogl/winsys/cogl-egl.c | 41 +++++++++++++++++++++++++++++++++++++++++ cogl/winsys/cogl-eglnative.c | 35 ----------------------------------- cogl/winsys/cogl-eglx.c | 41 ----------------------------------------- 4 files changed, 43 insertions(+), 78 deletions(-) commit 270e1e81883f6da4bf4b75aa4619ffc932ee68c0 Author: Neil Roberts Date: Fri Jun 18 15:25:51 2010 +0100 cogl-context: Use the function pointer for glActiveUnit Under WGL, any functions that were defined after GL 1.1 are not directly exported in the DLL so we need to reference them via the function pointers. A new call to glActiveUnit was missed in cogl-context.c cogl/cogl-context.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit f95cdfc11e756301d3575a657af864d8423d158e Author: Neil Roberts Date: Fri Jun 18 15:33:03 2010 +0100 cogl-material: Don't use the symbol 'near' The window headers contain the line #define near so it's not possible to use the symbol 'near' in code that's portable to Windows. This replaces it with 'near_val'. I think the define is meant to improve compatibility with code written for Windows 3.1 where near would be a keyword to make it a smaller pointer size. cogl/cogl-material.c | 20 ++++++++++---------- cogl/cogl-material.h | 16 ++++++++-------- 2 files changed, 18 insertions(+), 18 deletions(-) commit 7cd5908ef057099e309e8a7c8e69e2ac8959c6f3 Author: Richard Hughes Date: Tue Jun 15 22:36:19 2010 +0100 build: Fix a compiler warning when using make dist Signed-off-by: Emmanuele Bassi cogl/Makefile.am | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit d3b26f3f4d835a4ebc7d9424178ec578f800cb31 Author: Emmanuele Bassi Date: Tue Jun 15 16:42:30 2010 +0100 Set the initial value of a variable Fixes a compiler warning. cogl/cogl-primitives.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit c506b58ecfb6495c93417d3f130ea60aa0e66916 Author: Robert Bragg Date: Mon Jun 14 23:14:15 2010 +0100 material: Adds arbfp compile counter This adds a uprof counter to track how many ARBfp programs get compiled by an application. cogl/cogl-material.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) commit ba067c3da80d9e1ffe5a988cbf4b4472b2352806 Author: Robert Bragg Date: Thu Jun 10 19:03:57 2010 +0100 material: Support sparse ARBfp program generation We don't need to generate a new ARBfp program for every material created if we can find an ancestor whos state will result in the same program being generated. The more code we can have adopt the coding pattern of deriving their materials from other similar materials using cogl_material_copy() the more likely this metric will be good enough on its own to minimize the set of arbfp programs necessary to support a given application. cogl/cogl-material-private.h | 21 ++- cogl/cogl-material.c | 356 +++++++++++++++++++++++++++++++++++------- 2 files changed, 316 insertions(+), 61 deletions(-) commit a38e597aaaab1d14b367006c5b2e2f3ae31aab68 Author: Robert Bragg Date: Mon Jun 14 22:20:27 2010 +0100 material: free any layer cache in material_set_parent Previously in _cogl_material_pre_change_notify we manually freed the layer caches of a material if we caused a reparent, but it makes more sense to have _cogl_material_set_parent do this directly instead. cogl/cogl-material.c | 23 +++++------------------ 1 files changed, 5 insertions(+), 18 deletions(-) commit 92e8fbfdc6833ea04e3af4c54de668cfa97ed4c6 Author: Robert Bragg Date: Thu May 27 20:04:49 2010 +0100 Adds an internal weak material mechanism This adds a _cogl_material_weak_copy() function that can be used to create materials that don't count as strong dependants on their parents. This means the parent can be modified without worrying about how it will affect weak materials. The material age of the parent can potentially be queried to determine if a weak material might need to be re-created. cogl/cogl-material-private.h | 6 ++ cogl/cogl-material.c | 167 +++++++++++++++++++++++++++++------------- 2 files changed, 123 insertions(+), 50 deletions(-) commit 9689ec5aadc4fafdb5f12d3329dc5b87b51177b1 Author: Robert Bragg Date: Thu May 27 15:19:15 2010 +0100 material: Adds a simple material age getter When we add support for weak materials it's expected that Clutter will want to attach them as private data to other materials and it needs a mechanism to determine when a weak material should be re-created because its parent has changed somehow. This adds the concept of a material age (internal only currently) which increments whenever a material is modified. Clutter can then save the age of the material which its weak materials are derived from and later determine when the weak material may be invalid. cogl/cogl-material-private.h | 10 ++++++++++ cogl/cogl-material.c | 19 +++++++++++++++++++ 2 files changed, 29 insertions(+), 0 deletions(-) commit c9702be94e60c6bf7ddef8a25125dee1a4a1c095 Author: Robert Bragg Date: Thu May 27 15:18:15 2010 +0100 primitives: we were memsetting the wrong wrap mode overrides pointer In _cogl_texture_quad_multiple_primitives we weren't memsetting the CoglMaterialWrapModeOverrides structure we were memsetting &state.wrap_mode_overrides where state.wrap_mode_overrides is just a pointer that might potentially later point to the CoglMaterialWrapModeOverrides structure. cogl/cogl-primitives.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 20910a1215a4369c4ef5f7645c04eaa9e478010d Author: Robert Bragg Date: Wed May 26 14:13:37 2010 +0100 material: generalize how we compare simple material properties In _cogl_material_equal we were repeating the same code pattern to compare several of the state groups so this just adds simple_property_equal function that's now used instead. cogl/cogl-material.c | 134 +++++++++++++++++++++++--------------------------- 1 files changed, 62 insertions(+), 72 deletions(-) commit dab4ddc7184b25274c24fcec4c1e2d9dfff5e94a Author: Robert Bragg Date: Wed May 26 11:33:32 2010 +0100 material: Make CoglMaterial responsible for depth state This redirects the legacy depth testing APIs through CoglMaterial and adds a new experimental cogl_material_ API for handling the depth testing state. This adds the following new functions: cogl_material_set_depth_test_enabled cogl_material_get_depth_test_enabled cogl_material_set_depth_writing_enabled cogl_material_get_depth_writing_enabled cogl_material_set_depth_test_function cogl_material_get_depth_test_function cogl_material_set_depth_range cogl_material_get_depth_range As with other experimental Cogl API you need to define COGL_ENABLE_EXPERIMENTAL_API to access them and their stability isn't yet guaranteed. cogl/cogl-context.c | 8 + cogl/cogl-context.h | 8 + cogl/cogl-material-private.h | 19 ++- cogl/cogl-material.c | 323 ++++++++++++++++++++++++++++++++++++++++-- cogl/cogl-material.h | 207 +++++++++++++++++++++++++++ cogl/cogl-types.h | 25 +++- cogl/cogl.c | 28 +++-- cogl/cogl.h | 6 + 8 files changed, 596 insertions(+), 28 deletions(-) commit fca054e949476d3434df28f3f0ded9a9ca37f345 Author: Robert Bragg Date: Wed May 26 03:07:17 2010 +0100 cogl docs: Improve documentation for cogl_ortho cogl_ortho is one of those APIs whos style was, for better or worse, copied from OpenGL and for some inexplicable reason the near and far arguments are inconsistent with the left, right, top, bottom arguments because they don't take z coordinates they take a "distance" which should be negative for a plane behind the viewer. This updates the documentation to explain this. cogl/cogl.h | 21 +++++++++++++++++---- doc/reference/cogl/Makefile.am | 6 ++++-- doc/reference/cogl/cogl_ortho.png | Bin 0 -> 12650 bytes 3 files changed, 21 insertions(+), 6 deletions(-) commit a5d6c02f7c3ee085549d09150788e1209ab9de00 Author: Robert Bragg Date: Wed May 19 01:02:16 2010 +0100 primitives: no longer assume _get_layers list remains valid The internal CoglMaterialLayer pointers associated with a material may change whenever layer properties are modified so it's no longer ok to assume that a list of layers returned by cogl_material_get_layers remains valid if the layers have been changed. cogl/cogl-primitives.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit b57f68245cc4d91229ba3ad6a3e045573c41e014 Author: Robert Bragg Date: Wed May 19 00:36:31 2010 +0100 material: Adds simple breadcrumb debugging mechanism Since it can sometimes be awkward to figure out where a particular material came from when debugging, this adds a breadcrumb mechanism that lets you associate a const string with a material that may give a clue about its origin. cogl/cogl-material-private.h | 14 ++++++++++++++ cogl/cogl-material.c | 23 ++++++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletions(-) commit 6b5281401c643ace10243ce823656f0443f8967b Author: Robert Bragg Date: Tue May 18 23:38:33 2010 +0100 material: remove override options from _cogl_material_equal As a follow on to using cogl_material_copy instead of flush options this patch now removes the ability to pass flush options to _cogl_material_equal which is the final reference to the CoglMaterialFlushOptions mechanism. cogl/cogl-journal.c | 4 +-- cogl/cogl-material-private.h | 2 - cogl/cogl-material.c | 60 +++++++++-------------------------------- 3 files changed, 14 insertions(+), 52 deletions(-) commit 3979de69823c487ce9cd9455077ce755011fb0dc Author: Robert Bragg Date: Tue May 18 22:42:49 2010 +0100 cogl: remove _cogl_material_flush_gl_state flush options Since cogl_material_copy should now be cheap to use we can simplify how we handle fallbacks and wrap mode overrides etc by simply copying the original material and making our override changes on the new material. This avoids the need for a sideband state structure that has been growing in size and makes flushing material state more complex. Note the plan is to eventually use weak materials for these override materials and attach these as private data to the original materials so we aren't making so many one-shot materials. cogl/cogl-context.c | 2 +- cogl/cogl-journal-private.h | 1 - cogl/cogl-journal.c | 68 ++++++++++++++++++++++++++--------------- cogl/cogl-material-private.h | 6 +++- cogl/cogl-material.c | 38 ++--------------------- cogl/cogl-path.c | 24 ++++++++++----- cogl/cogl-primitives.c | 60 ++++++++++++++++++++++++------------ cogl/cogl-vertex-buffer.c | 45 +++++++++++++++++++++++++++- cogl/cogl.c | 4 +-- 9 files changed, 153 insertions(+), 95 deletions(-) commit 1cc3ae69444d09509d90c454f22802f4d897b5b7 Author: Robert Bragg Date: Thu Apr 8 12:21:04 2010 +0100 CoglMaterial: Implements sparse materials design This is a complete overhaul of the data structures used to manage CoglMaterial state. We have these requirements that were aiming to meet: (Note: the references to "renderlists" correspond to the effort to support scenegraph level shuffling of Clutter actor primitives so we can minimize GPU state changes) Sparse State: We wanted a design that allows sparse descriptions of state so it scales well as we make CoglMaterial responsible for more and more state. It needs to scale well in terms of memory usage and the cost of operations we need to apply to materials such as comparing, copying and flushing their state. I.e. we would rather have these things scale by the number of real changes a material represents not by how much overall state CoglMaterial becomes responsible for. Cheap Copies: As we add support for renderlists in Clutter we will need to be able to get an immutable handle for a given material's current state so that we can retain a record of a primitive with its associated material without worrying that changes to the original material will invalidate that record. No more flush override options: We want to get rid of the flush overrides mechanism we currently use to deal with texture fallbacks, wrap mode changes and to handle the use of highlevel CoglTextures that need to be resolved into lowlevel textures before flushing the material state. The flush options structure has been expanding in size and the structure is logged with every journal entry so it is not an approach that scales well at all. It also makes flushing material state that much more complex. Weak Materials: Again for renderlists we need a way to create materials derived from other materials but without the strict requirement that modifications to the original material wont affect the derived ("weak") material. The only requirement is that its possible to later check if the original material has been changed. A summary of the new design: A CoglMaterial now basically represents a diff against its parent. Each material has a single parent and a mask of state that it changes. Each group of state (such as the blending state) has an "authority" which is found by walking up from a given material through its ancestors checking the difference mask until a match for that group is found. There is only one root node to the graph of all materials, which is the default material first created when Cogl is being initialized. All the groups of state are divided into two types, such that infrequently changed state belongs in a separate "BigState" structure that is only allocated and attached to a material when necessary. CoglMaterialLayers are another sparse structure. Like CoglMaterials they represent a diff against their parent and all the layers are part of another graph with the "default_layer_0" layer being the root node that Cogl creates during initialization. Copying a material is now basically just a case of slice allocating a CoglMaterial, setting the parent to be the source being copied and zeroing the mask of changes. Flush overrides should now be handled by simply relying on the cheapness of copying a material and making changes to it. (This will be done in a follow on commit) Weak material support will be added in a follow on commit. cogl/cogl-atlas-texture.c | 10 + cogl/cogl-context.c | 23 +- cogl/cogl-context.h | 21 +- cogl/cogl-debug.c | 4 +- cogl/cogl-debug.h | 3 +- cogl/cogl-internal.h | 9 +- cogl/cogl-journal.c | 7 +- cogl/cogl-material-private.h | 606 +++-- cogl/cogl-material.c | 6220 ++++++++++++++++++++++++++++++------------ cogl/cogl-material.h | 6 +- cogl/cogl-path.c | 7 +- cogl/cogl-primitives.c | 29 +- cogl/cogl-vertex-buffer.c | 21 +- cogl/cogl.c | 8 - 14 files changed, 5024 insertions(+), 1950 deletions(-) commit 6c8b8cef9e202ab1dd5c5a6894dcdb16c86d1b9b Author: Robert Bragg Date: Tue Jun 15 14:26:37 2010 +0100 material: fix #ifdef guard around use of _TEXTURE_RECTANGLE We were incorrectly guarding the use of GL_TEXTURE_RECTANGLE_ARB with ifdef ARB_texture_rectangle instead of ifdef GL_ARB_texture_rectangle which broke test-cogl-texture-rectangle. cogl/cogl-material.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 26628553ed395437455ce1aaab15df7d6c4a7769 Author: Robert Bragg Date: Thu Jun 10 14:39:20 2010 +0100 blend-strings: removes the AUTO_COMPOSITE function enum This was mistakenly added some time ago because at some point when we were discussing how to handle premultiplied alpha in Clutter/Cogl we were considering having a magic "just do the right thing" option which was later abandoned. cogl/cogl-blend-string.c | 2 -- cogl/cogl-blend-string.h | 1 - cogl/cogl-material.c | 3 --- 3 files changed, 0 insertions(+), 6 deletions(-) commit 99bef3116df4c253b9acdf343a39b0404d7eb9ce Author: Robert Bragg Date: Thu Jun 10 14:17:42 2010 +0100 cogl-color: add cogl_color_init_from_xyz funcs This is to try and improve API consistency. Simple cogl structures that don't derive from CoglObject and which can be allocated on the stack, such as CoglColor and CoglMatrix should all have "_init" or "_init_from" functions to initialize all the structure members. (As opposed to a cogl_xyz_new() function for CoglObjects). CoglColor previously used the naming scheme "_set_from" for these initializers but "_set" is typically reserved for setting individual properties of a structure/object. This adds three _init functions: cogl_color_init_from_4ub cogl_color_init_from_4f cogl_color_init_from_4fv The _set_from functions are now deprecated but only with a gtk-doc annotation for now. This is because the cogl_color_set_from API is quite widely used already and so were giving a grace period before enabling a GCC deprecated warning just because otherwise the MX maintainers will complain to me that I've made their build logs look messy. cogl/cogl-color.c | 64 ++++++++++++++++++++++++++++++++++++++++------------ cogl/cogl-color.h | 61 +++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 106 insertions(+), 19 deletions(-) commit 49907d62678efb67bd8882151579ac13774a4896 Author: Robert Bragg Date: Thu Jun 10 14:07:40 2010 +0100 cogl-color: add private _cogl_color_get_rgba_4ubv API The journal logs colors as 4bytes into a vertex array and since we are planning to make CoglMaterial track its color using a CoglColor instead of a byte array this convenience will be useful for re-implementing _cogl_material_get_colorubv. cogl/cogl-color-private.h | 40 ++++++++++++++++++++++++++++++++++++++++ cogl/cogl-color.c | 7 +++++++ 2 files changed, 47 insertions(+), 0 deletions(-) commit 3af1dc18b866ce84ca897b2c310fb3ab07677639 Merge: fcfff3d cce5616 Author: Emmanuele Bassi Date: Fri Jun 11 18:12:54 2010 +0100 Merge branch 'wip/deform-effect' * wip/deform-effect: docs: Add DeformEffect and PageTurnEffect to the API reference effect: Add PageTurnEffect effect: Add DeformEffect offscreen-effect: Traslate the modelview with the offsets docs: Fix Effect subclassing section commit fcfff3dd042e104c54f500f16e7a7fbf45409254 Author: Neil Roberts Date: Fri Jun 11 14:47:30 2010 +0100 cogl/winsys/cogl-eglx: Use the right egl header on 1.1 Commit b0cc98fdceb introduced a #include for the egl header in cogl-eglx.c The header name is different under GLES 1.1 so it broke compilation. cogl/winsys/cogl-eglx.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit cc7722389c9b51c218a8a0ff1d3b12d6f262e78c Author: Neil Roberts Date: Fri Jun 11 14:37:56 2010 +0100 cogl-program: Add cogl_program_uniform_1i to GLES The GLES 1.1 backend was missing a stub for cogl_program_uniform_1i. cogl/driver/gles/cogl-program.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit 9343cb849a531e28609db1159b8f02b4b6b51e0b Author: Neil Roberts Date: Fri Jun 11 14:36:38 2010 +0100 cogl-gles2: Prefix internal GLES 2 wrapper symbols with _ Some internal symbols used for the GLES 2 wrapper were accidentally being exported. This prepends an underscore to them so they won't appear in the shared library. cogl/driver/gles/cogl-context-driver.c | 2 +- cogl/driver/gles/cogl-fixed-fragment-shader.glsl | 30 ++-- cogl/driver/gles/cogl-fixed-vertex-shader.glsl | 24 ++-- cogl/driver/gles/cogl-gles2-wrapper.c | 201 +++++++++++----------- cogl/driver/gles/cogl-gles2-wrapper.h | 192 ++++++++++---------- cogl/driver/gles/cogl-texture-driver.c | 2 +- 6 files changed, 226 insertions(+), 225 deletions(-) commit 0bbf50f905f73ccb450f8bf374f2f865a9302fbb Author: Neil Roberts Date: Thu Apr 22 14:33:47 2010 +0100 cogl-clip-stack: Always use the scissor when clipping Whenever a path or a rectangle is added to the clip stack it now also stores a screen space bounding box in the entry. Then when the clip stack is flushed the bounding box is first used to set up the scissor. That way when we eventually come to use the stencil buffer the clear will be affected by the scissor so we don't have to clear the entire buffer. cogl/cogl-clip-stack.c | 179 ++++++++++++++++++++++++++++++++---------------- cogl/cogl-path.c | 4 + 2 files changed, 124 insertions(+), 59 deletions(-) commit 5a71ff4cdd6e406c80d14c10e0e412236527158e Author: Neil Roberts Date: Thu Apr 22 14:13:52 2010 +0100 cogl-path: Export _cogl_path_get_bounds _cogl_path_get_bounds is no longer static and is exported in cogl-path-private.h so that it can be used in the clip stack code. The old version of the function returned x/y and width/height. However this was mostly used to call cogl_rectangle which takes x1/y1 x2/y2. The function has been changed to just directly return the second form because it is more useful. Anywhere that was previously using the function now just directly looks at path->path_nodes_min and path->path_nodes_max instead. cogl/cogl-path-private.h | 7 ++++ cogl/cogl-path.c | 72 +++++++++++++++++++++++++--------------------- 2 files changed, 46 insertions(+), 33 deletions(-) commit a9da7d72db3328f949a123d3b2a097e88b900fab Author: Neil Roberts Date: Thu Apr 22 13:48:49 2010 +0100 cogl-clip-state: Export transform_point internally to Cogl The transform_point function takes a modelview matrix, projection matrix and a viewport and performs all three transformations on a point to give a Cogl window coordinate. This is useful in a number of places in Cogl so this patch moves it to cogl.c and adds it to cogl-internal.h cogl/cogl-clip-state.c | 45 +++------------------------------------------ cogl/cogl-internal.h | 7 +++++++ cogl/cogl.c | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 42 deletions(-) commit 4abd42aced823a182da8353966cecb2f3783d8f7 Author: Sunil Sadasivan Date: Thu May 13 00:59:06 2010 -0700 cogl_texture_get_data() copies using wrong width size. For sliced 2D textures, _cogl_texture_2d_sliced_get_data() uses the bitmap width, instead of the rowstride, when memcpy()ing into the dest buffer. Signed-off-by: Robert Bragg cogl/cogl-texture-2d-sliced.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 98f2d2516b2e680d8b0081cc34932b4b4d9e7d3a Author: Damien Lespiau Date: Sun Jun 6 23:03:26 2010 +0100 cogl-color: Provide setters for all the channels We only had getters for the red, green, blue and alpha channels of a color. This meant that, if you wanted to change, say, the alpha component of a color, one would need to query the red, green and blue channels and use set_from_4ub() or set_from_4f(). Instead of this, just provide some setters for CoglColor, using the same naming scheme than the existing getters. cogl/cogl-color.c | 84 ++++++++++++++++++ cogl/cogl-color.h | 156 ++++++++++++++++++++++++++++++++++ doc/reference/cogl/cogl-sections.txt | 18 ++++ 3 files changed, 258 insertions(+), 0 deletions(-) commit 896dd975d19a7df8790cbd82b7d53f13d63587e3 Author: Damien Lespiau Date: Sun Jun 6 22:57:02 2010 +0100 cogl-color: Add cogl_color_unpremultiply() For some operations on pre-multiplied colors (say, replace the alpha value), you need to unpremultiply the color. This patch provides the counterpart to cogl_color_premultiply(). cogl/cogl-color.c | 11 +++++++++++ cogl/cogl-color.h | 13 +++++++++++++ doc/reference/cogl/cogl-sections.txt | 1 + 3 files changed, 25 insertions(+), 0 deletions(-) commit 2ba6ab6dbc34e04b069fb0c88ed8d392a48a7b91 Author: Emmanuele Bassi Date: Wed May 26 16:32:23 2010 +0100 cogl: Initialize the framebuffer bits on state flush The place where we actually change the framebuffer is _cogl_framebuffer_flush_state(), so if we changed to a new frame buffer we need to initialize the color bits there. http://bugzilla.openedhand.com/show_bug.cgi?id=2094 cogl/cogl-framebuffer.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) commit 7a7dedebd515c0064809719cdd3a7b8b9f0f1935 Author: Emmanuele Bassi Date: Wed May 26 17:14:53 2010 +0100 cogl-framebuffer: Use the FBO extension for color sizes OpenGL 3.0 deprecated querying of the GL_{RED,GREEN,BLUE}_BITS constants, and the FBO extension provides a mechanism to query for the color buffer sizes which *should* work even with the default framebuffer. Unfortunately, this doesn't seem to hold for Mesa - so we just use this for the offscreen CoglFramebuffer type, and we fall back to glGetIntegerv() for the onscreen one. http://bugzilla.openedhand.com/show_bug.cgi?id=2094 cogl/cogl-debug.c | 4 +- cogl/cogl-framebuffer.c | 78 +++++++++++++++++++++++++++-- cogl/driver/gl/cogl-feature-functions.h | 5 ++ cogl/driver/gles/cogl-feature-functions.h | 5 ++ 4 files changed, 87 insertions(+), 5 deletions(-) commit 3c4451cd848cd1f9bc5e4a228d415cddba7c7e81 Author: Emmanuele Bassi Date: Wed May 26 16:31:18 2010 +0100 cogl: Hide cogl_framebuffer_get_*_bits() These accessors should be private, for the time being. http://bugzilla.openedhand.com/show_bug.cgi?id=2094 cogl/cogl-framebuffer.c | 8 ++++---- cogl/cogl.c | 8 ++++---- cogl/cogl.h | 24 ++++++++++++------------ 3 files changed, 20 insertions(+), 20 deletions(-) commit cce5616edff223cf81705321d58fa917c6f55d18 Author: Neil Roberts Date: Wed Jun 9 13:53:34 2010 +0100 cogl-material: Fix the function which sets the enable blend flag This function had two problems. Firstly it would clear the enable blend flag before calling pre_change_notify so that if blending was previously enabled the journal would end up being flushed while the flag was still cleared. Secondly it would call the pre change notify whenever blending is needed regardless of whether it was already needed previously. This was causing problems in test-depth. cogl/cogl-material.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-) commit 82e80e67650ac8ec119f2d909423ab5b707206a7 Author: Robert Bragg Date: Mon Apr 26 10:01:43 2010 +0100 material: Avoid redundant glBindTexture calls This adds a _cogl_bind_gl_texture_transient function that should be used instead of glBindTexture so we can have a consistent cache of the textures bound to each texture unit so we can avoid some redundant binding. cogl/cogl-atlas-texture.c | 10 ++- cogl/cogl-material-private.h | 28 ++++++++ cogl/cogl-material.c | 112 +++++++++++++++++++++++++++++-- cogl/cogl-sub-texture.c | 6 +- cogl/cogl-texture-2d-sliced.c | 55 ++++++++++++---- cogl/cogl-texture-2d.c | 32 +++++++-- cogl/cogl-texture-driver.h | 2 + cogl/cogl-texture-private.h | 19 ++++++ cogl/cogl-texture.c | 23 +++++++ cogl/driver/gl/cogl-texture-driver.c | 11 ++- cogl/driver/gles/cogl-texture-driver.c | 9 ++- 11 files changed, 266 insertions(+), 41 deletions(-) commit acc44161c108dafef63d730b585b4f68b935f6ad Author: Robert Bragg Date: Mon Apr 26 10:01:43 2010 +0100 material: Adds backend abstraction for fragment processing As part of an effort to improve the architecture of CoglMaterial internally this overhauls how we flush layer state to OpenGL by adding a formal backend abstraction for fragment processing and further formalizing the CoglTextureUnit abstraction. There are three backends: "glsl", "arbfp" and "fixed". The fixed backend uses the OpenGL fixed function APIs to setup the fragment processing, the arbfp backend uses code generation to handle fragment processing using an ARBfp program, and the GLSL backend is currently only there as a formality to handle user programs associated with a material. (i.e. the glsl backend doesn't yet support code generation) The GLSL backend has highest precedence, then arbfp and finally the fixed. If a backend can't support some particular CoglMaterial feature then it will fallback to the next backend. This adds three new COGL_DEBUG options: * "disable-texturing" as expected should disable all texturing * "disable-arbfp" always make the arbfp backend fallback * "disable-glsl" always make the glsl backend fallback * "show-source" show code generated by the arbfp/glsl backends cogl/cogl-buffer.c | 2 - cogl/cogl-context.c | 38 +- cogl/cogl-context.h | 22 +- cogl/cogl-debug.c | 10 +- cogl/cogl-debug.h | 6 +- cogl/cogl-internal.h | 15 - cogl/cogl-journal.c | 11 +- cogl/cogl-material-private.h | 234 ++- cogl/cogl-material.c | 2674 ++++++++++++++++++++++--------- cogl/cogl-path.c | 27 +- cogl/cogl-pixel-buffer.c | 2 - cogl/cogl-primitives.c | 33 +- cogl/cogl-vertex-buffer.c | 36 +- cogl/cogl.c | 109 +-- cogl/driver/gl/cogl-context-driver.h | 2 + cogl/driver/gl/cogl-feature-functions.h | 57 +- cogl/driver/gl/cogl-program.c | 106 +- cogl/driver/gl/cogl-program.h | 2 +- cogl/driver/gl/cogl-shader.c | 26 +- cogl/driver/gles/cogl-program.c | 15 +- 20 files changed, 2398 insertions(+), 1029 deletions(-) commit 8ebf76a9a91da0bbbe1208366c1740f0c77d6392 Author: Neil Roberts Date: Wed Jun 9 14:42:18 2010 +0100 cogl-atlas-texture: Flush the journal before starting blit not after _cogl_atlas_texture_blit_begin binds a texture to use as the destination and it expects it to stay bound until _cogl_atlas_texture_end_blit is called. However there was a call to _cogl_journal_flush directly after setting up the blit state which could cause the wrong texture to be bound. This just moves the flush to before the call to _cogl_atlas_texture_blit_begin. This was breaking test-cogl-sub-texture. cogl/cogl-atlas-texture.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 4ac3133208af1c3cc502692113e7273c5265df05 Author: Robert Bragg Date: Fri Jun 4 16:42:30 2010 +0100 atlas: fix some journal flushing issues 1) Always flush when migrating textures out of an atlas because although it's true that the original texture data will remain valid in the original texture we can't assume that journal entries have resolved the GL texture that will be used. This is only true if a layer0_override has been used. 2) Don't flush at the point of creating a new atlas simply flush immediately before reorganizing an atlas. This means we are now assuming that we will never see recursion due to atlas textures being modified during a journal flush. This means it's the responsibility of the primitives code to _ensure_mipmaps for example not the responsibility of _cogl_material_flush_gl_state. cogl/cogl-atlas-texture.c | 39 +++++++++++++++++---------------------- 1 files changed, 17 insertions(+), 22 deletions(-) commit a21d90912905672a52b31d44dad0988f102d29ec Author: Robert Bragg Date: Fri Jun 4 17:06:32 2010 +0100 primitives: make sure to update texture storage before drawing We want to make sure that the material state flushing code will never result in changes to the texture storage for that material. So for example mipmaps need to be ensured by the primitives code. Changes to the texture storage will invalidate the texture coordinates in the journal and we want to avoid a recursion of journal flushing. cogl/cogl-material.c | 2 - cogl/cogl-primitives.c | 58 +++++++++++++++++++++++++++++++++++++++++---- cogl/cogl-vertex-buffer.c | 7 +++++ 3 files changed, 60 insertions(+), 7 deletions(-) commit 1047c1c082dd80a840e408c89ead597ba903f614 Author: Robert Bragg Date: Mon Apr 26 09:55:50 2010 +0100 matrix: add cogl_matrix_equal API This adds a way to compare two CoglMatrix structures to see if they represent the same transformations. memcmp can't be used because a CoglMatrix contains private flags and padding. cogl/cogl-matrix.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ cogl/cogl-matrix.h | 15 +++++++++++++++ 2 files changed, 60 insertions(+), 0 deletions(-) commit 8ee099d204f2deb7da85b6fc93a1f28704767e35 Author: Damien Lespiau Date: Wed Nov 18 00:26:09 2009 +0000 cogl-material: Use fragment programs instead of texture env combiners THIS IS A WORK IN PROGRESS Mesa is building a big shader when using ARB_texture_env_combine. The idea is to bypass that computation, do it ourselves and cache the compiled program in a CoglMaterial. For now that feature can be enabled by setting the COGL_PIPELINE environment variable to "arbfp". COGL_SHOW_FP_SOURCE can be set to a non empty string to dump the fragment program source too. TODO: * fog (really easy, using OPTION) * support tex env combiner operands, DOT3, ADD_SIGNED, INTERPOLATE combine modes (need refactoring the generation of temporary variables) (not too hard) * alpha testing for GLES 2.0? cogl/cogl-material-private.h | 11 ++ cogl/cogl-material.c | 354 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 363 insertions(+), 2 deletions(-) commit 56dd71dba0aafeb6c0f1c62a021ede1034e5af98 Author: Damien Lespiau Date: Sat Nov 14 14:59:59 2009 +0000 cogl: Introduce private feature flags and check for ARB_fp The Cogl context has now a feature_flags_private enum that will allow us to query and use OpenGL features without exposing them in the public API. The ARB_fragment_program extension is the first user of those flags. Looking for this extension only happens in the gl driver as the gles drivers will not expose them. One can use _cogl_features_available_private() to check for the availability of such private features. While at it, reindent cogl-internal.h as described in CODING_STYLE. cogl/cogl-context.c | 1 + cogl/cogl-context.h | 5 ++- cogl/cogl-feature-private.h | 3 ++ cogl/cogl-internal.h | 8 +++++ cogl/cogl.c | 11 +++++++ cogl/driver/gl/cogl-context-driver.c | 2 +- cogl/driver/gl/cogl-context-driver.h | 2 +- cogl/driver/gl/cogl-feature-functions.h | 42 ++++++++++++++++++++++++---- cogl/driver/gl/cogl.c | 25 +++++++++++------ cogl/driver/gles/cogl-context-driver.c | 2 +- cogl/driver/gles/cogl-context-driver.h | 2 +- cogl/driver/gles/cogl-feature-functions.h | 6 +++- cogl/driver/gles/cogl.c | 8 +++-- 13 files changed, 91 insertions(+), 26 deletions(-) commit 8836c868a433bfae7296e1cb0a9ffb75c952d391 Author: Neil Roberts Date: Tue Jun 8 17:26:26 2010 +0100 cogl-gles2-wrapper: Fix some cases using the wrong texture unit At two places in cogl_wrap_prepare_for_draw it was trying to loop over the texture units to flush some state. However it was retrieving the texture unit pointer using w->active_texture_unit instead of the loop index so it would end up with the wrong state. Also in glEnableClientState it was using the active unit instead of the client active unit. cogl/driver/gles/cogl-gles2-wrapper.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-) commit 2e52c5f67bae148b0061d26f8924cef685ff9e62 Author: Damien Lespiau Date: Sat Jun 5 21:05:23 2010 +0100 doc: Some fixes for the Cogl documentation • 3 general fixes (typos, copy/paste), • ignore cogl-object-private.h, • cogl_fixed_atani() was in reality cogl_fixed_atan(), fixed in commit 43564f05. • Fix the cogl-vector section: sections must have a tag at the end. Also the cogl-vector section was added in the middle of the cogl-buffer one. Let's shiffle it out and add that tag. cogl/cogl-types.h | 6 +++--- doc/reference/cogl/Makefile.am | 1 + doc/reference/cogl/cogl-sections.txt | 13 +++++++------ 3 files changed, 11 insertions(+), 9 deletions(-) commit 7fa011b037e77fea4eb998c8d3950487bcf1cb5e Author: Damien Lespiau Date: Fri Jun 4 17:17:45 2010 +0100 build: Don't distribute clutter-version.h and cogl-defines.h As with a351ff2af earlier, distributing headers generated at configure time conflicts with out of tree builds as the distributed headers will be included first instead of including the generated ones. cogl/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 7dbcb82622f97daa26a7000b0924c7c82bfe1e81 Author: Robert Bragg Date: Tue Jun 1 19:27:07 2010 +0100 cogl-object-private.h: white space cleanup simply replaces tabs with spaces cogl/cogl-object-private.h | 101 ++++++++++++++++++++++---------------------- 1 files changed, 51 insertions(+), 50 deletions(-) commit d02d40bf61009bf67d80742c61ddd64c3aa327d3 Author: Robert Bragg Date: Tue Jun 1 18:06:47 2010 +0100 CoglObject: Adds a COGL_OBJECT macro for casting This adds a convenience COGL_OBJECT macro for casting CoglObject subclasses to (CoglObject *) pointers. cogl/cogl-object.h | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 5af3ead3a2bbd18f4b1ee35eabffd20d740749c1 Author: Robert Bragg Date: Thu May 27 22:24:56 2010 +0100 CoglObject: Adds cogl_object_{get,set}_user_data This provides a mechanism for associating private data with any CoglObject. We expect Clutter will use this to associate weak materials with normal materials. cogl/Makefile.am | 3 + cogl/cogl-handle.h | 2 +- cogl/cogl-object-private.h | 205 ++++++++++++++++++++++++++++ cogl/cogl-object.c | 246 ++++++++++++++++++++++++++++++++++ cogl/cogl-object.h | 245 +++++++++++++--------------------- cogl/cogl-util.c | 61 --------- cogl/cogl.h | 1 + doc/reference/cogl/cogl-sections.txt | 6 + 8 files changed, 554 insertions(+), 215 deletions(-) commit ef08c6369a0bb2a261fa16bf4323a5d524d5d788 Author: Robert Bragg Date: Tue Jun 1 17:53:42 2010 +0100 cogl-path: Adds missing cogl_is_path prototype This adds a missing cogl_is_path prototype to the public cogl-path.h header. cogl/cogl-path.h | 12 ++++++++++++ doc/reference/cogl/cogl-sections.txt | 1 + 2 files changed, 13 insertions(+), 0 deletions(-) commit 368dc483723ae213594df202b6651234c0c419fa Author: Robert Bragg Date: Tue Jun 1 17:34:59 2010 +0100 cogl-path: Renames cogl_path_get/set cogl_get/set_path These aren't path methods so aren't consistent with the cogl_object_method naming style we are aiming for. cogl/cogl-clip-state.c | 2 +- cogl/cogl-path.c | 47 +++++++++++++++++---------------- cogl/cogl-path.h | 8 +++--- doc/reference/cogl/cogl-sections.txt | 4 +- 4 files changed, 31 insertions(+), 30 deletions(-) commit 63eeaa86ea7ab9879c39de35ab985cc935057c53 Author: Damien Lespiau Date: Thu Jun 3 11:33:54 2010 +0100 build: Distribute cogl-object.h cogl-object.h is a new public header. Include it in the right list of source files to have it distributed. cogl/Makefile.am | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit cd7c1dca765ce773a383df6c4469744bd298dc36 Author: Emmanuele Bassi Date: Tue Jun 1 14:14:41 2010 +0100 docs: Miscellaneous fixes to silence gtk-doc cogl/cogl.h | 29 ++++++++++++++--------------- 1 files changed, 14 insertions(+), 15 deletions(-) commit 595271ac877e4dffe0599aeaf3d61224215a4ec3 Author: Robert Bragg Date: Fri May 28 01:01:28 2010 +0100 clip_stack: Remove use of CoglHandle in the CoglClipStack API This replaces the use of CoglHandle with strongly type CoglClipStack * pointers instead. The only function not converted for now is cogl_is_clip_stack which will be done in a later commit. cogl/cogl-clip-stack.c | 64 ++++++++++++++++++++--------------------------- cogl/cogl-clip-stack.h | 26 ++++++++++--------- 2 files changed, 41 insertions(+), 49 deletions(-) commit 653d1a32542f5be81f136cb51ad1de2d39f88739 Author: Robert Bragg Date: Fri May 28 00:51:40 2010 +0100 bitmap: Remove use of CoglHandle in the CoglBitmap API This replaces the use of CoglHandle with strongly type CoglBitmap * pointers instead. The only function not converted for now is cogl_is_bitmap which will be done in a later commit. cogl/cogl-bitmap-private.h | 4 ++-- cogl/cogl-bitmap.c | 6 +++--- cogl/cogl-bitmap.h | 8 +++++--- 3 files changed, 10 insertions(+), 8 deletions(-) commit 817c1cddccf1286e3773ab74a43892484b2bd75f Author: Robert Bragg Date: Fri May 28 00:35:47 2010 +0100 path: Remove use of CoglHandle in the CoglPath API This replaces the use of CoglHandle with strongly type CoglPath * pointers instead. The only function not converted for now is cogl_is_path which will be done in a later commit. cogl/cogl-path-private.h | 5 +-- cogl/cogl-path.c | 52 +++++++++++++++++++++------------------------ cogl/cogl-path.h | 41 +++++++++++++++++++---------------- cogl/cogl.c | 10 ++++---- 4 files changed, 53 insertions(+), 55 deletions(-) commit 5f8fadeb1c4956741ab76eb0f19d440a7a50280f Author: Robert Bragg Date: Tue Jun 1 11:50:02 2010 +0100 cogl: avoid ‘_cogl_xyz_handle_new’ defined but not used warnings This patch makes it so that only the backwards compatibility COGL_HANDLE_DEFINE macro defines a _cogl_xyz_handle_new function. The new COGL_OBJECT_DEFINE macro only defines a _cogl_xyz_object_new function. cogl/cogl-object.h | 18 ++++++++++-------- 1 files changed, 10 insertions(+), 8 deletions(-) commit db7cc5b1b416557419b85e06114ed89c7e263039 Author: Damien Lespiau Date: Thu May 27 13:30:07 2010 +0100 analysis: Fix some CoglFixed API 2 functions where not correctly defined/documented, use the actual symbol name instead. cogl/cogl-fixed.h | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 45a947d226c5d81c2fc8b8d716c9b014d86f4113 Author: Damien Lespiau Date: Thu May 27 13:28:43 2010 +0100 analysis: Use static functions when possible It's best to ensure the functions only used in one compilation unit are marked as static so GCC can inline them if it feels like it. cogl/cogl-clip-stack.c | 2 +- cogl/cogl-clip-state.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 338a37d468dc3d3fc523930b4eeab56b7664b864 Author: Damien Lespiau Date: Thu May 27 12:18:29 2010 +0100 analysis: Make all function declarations be protoypes It's valid C to declare a function omitting it prototype, but it seems to be a good practise to always declare a function with its corresponding prototype. cogl/cogl-context.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 58b0028b52f5e9d1eda9747ee262284ba8d9c73b Author: Damien Lespiau Date: Thu May 27 08:28:29 2010 +0100 analysis: FALSE/0 used in pointer context While this is totally fine (0 in the pointer context will be converted in the right internal NULL representation, which could be a value with some bits to 1), I believe it's clearer to use NULL in the pointer context. It seems that, in most case, it's more an overlook than a deliberate choice to use FALSE/0 as NULL, eg. copying a _COGL_GET_CONTEXT (ctx, 0) or a g_return_val_if_fail (cond, 0) from a function returning a gboolean. cogl/cogl-buffer.c | 2 +- cogl/cogl-journal.c | 2 +- cogl/cogl-path.c | 4 ++-- cogl/cogl-texture-2d-sliced.c | 2 +- cogl/cogl-vertex-buffer.c | 14 +++++++------- cogl/driver/gl/cogl-program.c | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) commit 3aaef72e50a1934cc54dec4322cb838295d12c70 Author: Robert Bragg Date: Thu May 27 23:40:40 2010 +0100 buffer: Remove use of CoglHandle in the CoglBuffer API This replaces the use of CoglHandle with strongly type CoglBuffer * pointers instead. The only function not converted for now is cogl_is_buffer which will be done in a later commit. cogl/cogl-buffer-private.h | 1 - cogl/cogl-buffer.c | 62 +++++++++++++++++-------------------------- cogl/cogl-buffer.h | 58 +++++++++++++++++++++-------------------- 3 files changed, 55 insertions(+), 66 deletions(-) commit 7bcea1c64eede09582cf0bbfafaec48cac42744c Author: Robert Bragg Date: Thu May 27 23:31:40 2010 +0100 Start eradicating the CoglHandle typedef CoglHandle is a common source of complaints and confusion because people expect a "handle" to be some form of integer type with some indirection to lookup the corresponding objects as opposed to a direct pointer. This patch starts by renaming CoglHandle to CoglObject * and creating corresponding cogl_object_ APIs to replace the cogl_handle ones. The next step though is to remove all use of CoglHandle in the Cogl APIs and replace with strongly typed pointer types such as CoglMaterial * or CoglTexture * etc also all occurrences of COGL_INVALID_HANDLE can just use NULL instead. After this we will consider switching to GTypeInstance internally so we can have inheritance for our types and hopefully improve how we handle bindings. Note all these changes will be done in a way that maintains the API and ABI. cogl/cogl-handle.h | 140 +++------------------------------------- cogl/cogl-object.h | 183 ++++++++++++++++++++++++++++++++++++++++++++++++++++ cogl/cogl-types.h | 21 ++++++ cogl/cogl-util.c | 43 +++++++++---- 4 files changed, 244 insertions(+), 143 deletions(-) commit 0f32fb4acd0835ecc24803a81a2d1a77174a920a Author: Neil Roberts Date: Fri May 28 18:12:53 2010 +0100 cogl-texture-2d: Regenerate the mipmaps when the texture is modified When the texture is modified by cogl_texture_set_region, it wasn't setting mipmaps_dirty so it would never update the mipmaps. cogl/cogl-texture-2d.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 4c1a12d824d58876ee70ddd2913bb1580bc7b81a Author: Robert Bragg Date: Fri Sep 25 19:04:13 2009 +0100 [material] fix _set_alpha_test_function: missing a glEnable(GL_ALPHA_TEST) Since the default alpha test function of GL_ALWAYS is equivalent to GL_ALPHA_TEST being disabled we don't need to worry about Enabling/Disabling it when flushing material state, instead it's enough to leave it always enabled. We will assume that any driver worth its salt wont incur any additional cost for glEnable (GL_ALPHA_TEST) + GL_ALWAYS vs glDisable (GL_ALPHA_TEST). This patch simply calls glEnable (GL_ALPHA_TEST) in cogl_create_context cogl/cogl-context.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit 5a1cffd0bb8036bd48deab24b9e6d84d8149a7ba Author: Neil Roberts Date: Thu May 27 14:54:14 2010 +0100 cogl-vertex-buffer: Don't disable any texture coord arrays The enabled state of the texture coord arrays is cached in the cogl context so there is no need to disable them when we've finished rendering a vbo. cogl/cogl-vertex-buffer.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) commit 97fd2c368e96d5475cda8872f36fadc6f14ef0a4 Author: Neil Roberts Date: Thu May 27 14:51:44 2010 +0100 cogl: Record new enabled arrays in _cogl_disable_other_texcoord_arrays When _cogl_disable_other_texcoord_arrays is called it disables the neccessary texcoord arrays and then removes the bits for the disabled arrays in ctx->texcoord_arrays_enabled. However none of the places that call the function then set any bits in ctx->texcoord_arrays_enabled so the arrays would never get marked and they would never get disabled again. This patch just changes it so that _cogl_disable_other_texcoord_arrays also sets the corresponding bits in ctx->texcoord_arrays_enabled. cogl/cogl-internal.h | 3 ++- cogl/cogl.c | 1 + 2 files changed, 3 insertions(+), 1 deletions(-) commit aaf5600b2d4e1a37b52ba45126b0f31bf2e270f9 Author: Neil Roberts Date: Mon May 24 12:40:11 2010 +0100 cogl: Use a CoglBitmask to store the list of used texcoord arrays Instead of directly using a guint32 to store a bitmask for each used texcoord array, it now stores them in a CoglBitmask. This removes the limitation of 32 layers (although there are still other places in Cogl that imply this restriction). To disable texcoord arrays code should call _cogl_disable_other_texcoord_arrays which takes a bitmask of texcoord arrays that should not be disabled. There are two extra bitmasks stored in the CoglContext which are used temporarily for this function to avoid allocating a new bitmask each time. http://bugzilla.openedhand.com/show_bug.cgi?id=2132 cogl/cogl-context.c | 8 +++++++- cogl/cogl-context.h | 8 +++++++- cogl/cogl-internal.h | 5 ++++- cogl/cogl-journal.c | 7 +++---- cogl/cogl-path.c | 3 ++- cogl/cogl-primitives.c | 7 +++---- cogl/cogl-vertex-buffer.c | 10 ++++++---- cogl/cogl.c | 41 +++++++++++++++++++++++------------------ 8 files changed, 55 insertions(+), 34 deletions(-) commit 4fb784d111605ac629e1ed63bfb9ff744beb3209 Author: Neil Roberts Date: Thu May 20 17:31:42 2010 +0100 cogl: Add an internal CoglBitmask type This implements a growable array of bits called CoglBitmask. The CoglBitmask is intended to be cheap if less than 32 bits are used. If more bits are required it will allocate a GArray. The type is meant to be allocated on the stack but because it can require additional resources it also has a destroy function. http://bugzilla.openedhand.com/show_bug.cgi?id=2132 cogl/Makefile.am | 2 + cogl/cogl-bitmask.c | 257 +++++++++++++++++++++++++++++++++++++++++++++++++++ cogl/cogl-bitmask.h | 223 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 482 insertions(+), 0 deletions(-) commit 52cbc93b1870b7734363024318603fbe67030126 Author: Neil Roberts Date: Thu May 20 00:40:24 2010 +0100 cogl-material: Fix the count of the number of layers Previously the counter for the number of layers was only updated whenever the texture handle for a layer changes. However there are many other ways for a new layer to be created for example by setting a layer combine constant. Also by default the texture on a layer is COGL_INVALID_HANDLE so if the application tries to create an explicit layer with no texture by calling cogl_material_set_layer with COGL_INVALID_HANDLE then it also wouldn't update the count. This patch fixes that by incrementing the count in cogl_material_get_layer instead. This function is called by all functions that may end up creating a layer so it seems like the most appropriate place. http://bugzilla.openedhand.com/show_bug.cgi?id=2132 cogl/cogl-material.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 992d5f7fb616870b2f1bce0ac2122cfa4bfe34c9 Author: Neil Roberts Date: Thu May 20 00:16:49 2010 +0100 cogl-vertex-buffer: Don't disable layers with no texture coords It should be quite acceptable to use a texture without defining any texture coords. For example a shader may be in use that is doing texture lookups without referencing the texture coordinates. Also it should be possible to replace the vertex colors using a texture layer without a texture but with a constant layer color. enable_state_for_drawing_buffer no longer sets any disabled layers in the overrides. Instead of counting the number of units with texture coordinates it now keeps them in a mask. This means there can now be gaps in the list of enabled texture coordinate arrays. To cope with this, the Cogl context now also stores a mask to track the enabled arrays. Instead of code manually iterating each enabled array to disable them, there is now an internal function called _cogl_disable_texcoord_arrays which disables a given mask. I think this could also fix potential bugs when a vertex buffer has gaps in the texture coordinate attributes that it provides. For example if the vertex buffer only had texture coordinates for layer 2 then the disabling code would not disable the coordinates for layers 0 and 1 even though they are not used. This could cause a crash if the previous data for those arrays is no longer valid. http://bugzilla.openedhand.com/show_bug.cgi?id=2132 cogl/cogl-context.c | 2 +- cogl/cogl-context.h | 3 ++- cogl/cogl-internal.h | 3 +++ cogl/cogl-journal.c | 14 +++++--------- cogl/cogl-path.c | 9 ++------- cogl/cogl-primitives.c | 13 ++++--------- cogl/cogl-vertex-buffer.c | 21 ++++++--------------- cogl/cogl.c | 33 ++++++++++++++++++++++++++------- 8 files changed, 49 insertions(+), 49 deletions(-) commit 99c7e51145ad751ae1c4b171e7af687e82247e59 Merge: 94c1614 af591f5 Author: Emmanuele Bassi Date: Mon May 24 10:42:03 2010 +0100 Merge branch 'wip/state-machine' * wip/state-machine: Do not use wildcards in test-state script: Implement State deserialization state: added a "target-state" property state: documented data structures Add State interactive tests to the ignore file state: Documentation and introspection annotation fixes state: Minor coding style fixes state: Clean up the header's documentation state: Constify StateKey accessors Do not include clutter.h from a Clutter header file state-machine: made clutter_state_change take a boolean animate argument state-machine: use clutter_timeline_get_progress state-machine: add completed signal state machine: added state machine Conflicts: .gitignore commit 94c1614164b720b2c06e7252688795137e16cd70 Merge: 6696b4f 676c8a5 Author: Emmanuele Bassi Date: Fri May 21 14:38:37 2010 +0100 Merge branch 'wip/framebuffer-bits' * wip/framebuffer-bits: Implement accessors for the color bits in a framebuffer commit 6696b4ff4331b49128bbd933cb72b72d5b10ba20 Merge: fa22ee0 1eddbe8 Author: Emmanuele Bassi Date: Fri May 21 10:55:09 2010 +0100 Merge branch 'wip/constraints' * wip/constraints: (24 commits) Add the Cogl API reference to the fixxref extra directories Document the internal MetaGroup class Remove the construct-only flag from ActorMeta:name doc: Remove gtk-doc annotations from the json-glib copy doc: Fix parameter documentation Add named modifiers for Action and Constraint Remove a redundant animation Set the stage resizable in test-constraints Use a 9 grid for the constraints test Miscellaneous documentation fixes docs: Document animating action and constraint properties docs: Document BindConstraint and AlignConstraint constraint: Rename BindConstraint:bind-axis constraints: Add AlignConstraint tests: Add a constraints interactive test constraint: Add BindConstraint actor: Implement Animatable animation: Use the new Animatable API for custom properties animatable: Add custom properties to Animatable constraint: Add ClutterConstraint base class ... Conflicts: configure.ac commit fa22ee0e8d7cab726be9534bd7afd851e944ea5c Author: Robert Bragg Date: Thu May 20 14:54:44 2010 +0100 math: Adds an experimental cogl_vector3_* API This adds a math utility API for handling 3 component, single precision float vectors with the following; mostly self explanatory functions: cogl_vector3_init cogl_vector3_init_zero cogl_vector3_equal cogl_vector3_equal_with_epsilon cogl_vector3_copy cogl_vector3_free cogl_vector3_invert cogl_vector3_add cogl_vector3_subtract cogl_vector3_multiply_scalar cogl_vector3_divide_scalar cogl_vector3_normalize cogl_vector3_magnitude cogl_vector3_cross_product cogl_vector3_dot_product cogl_vector3_distance Since the API is experimental you will need to define COGL_ENABLE_EXPERIMENTAL_API before including cogl.h if you want to use the API. cogl/Makefile.am | 2 + cogl/cogl-vector.c | 284 ++++++++++++++++++++++++++ cogl/cogl-vector.h | 367 ++++++++++++++++++++++++++++++++++ cogl/cogl.h | 2 + doc/reference/cogl/cogl-docs.xml.in | 1 + doc/reference/cogl/cogl-sections.txt | 20 ++ 6 files changed, 676 insertions(+), 0 deletions(-) commit af591f5c09e0e2a1ce91d94d1d0a08cfb5a54c6b Author: Neil Roberts Date: Thu May 20 12:37:56 2010 +0100 cogl-texture-2d: Optimise _cogl_texture_2d_is_pot This takes the simple algorithm from here: http://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2 This avoids a loop and is much faster. cogl/cogl-texture-2d.c | 15 +-------------- 1 files changed, 1 insertions(+), 14 deletions(-) commit 76d5a1a8589cec5670c7fd2fea351f58049346ba Author: Robert Bragg Date: Tue Oct 13 15:27:06 2009 +0100 Stubs out _cogl_xlib_handle_event This stubs out an xlib event handling mechanism for Cogl. The intention is for Clutter to use this to forward all x11 events to Cogl. As we move winsys functionality down into Cogl, Cogl will become responsible for handling a number of X events: ConfigureNotify events for onscreen framebuffers, swap events and Damage events for cogl_x11_texture_pixmap. cogl/Makefile.am | 6 +++- cogl/cogl-internal.h | 39 +++++++++++++++++++++++++++++++++ cogl/winsys/cogl-xlib.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 97 insertions(+), 2 deletions(-) commit 1ed1d4fc6a3faa0a26ea06d0e741549c20010ef2 Author: Robert Bragg Date: Thu Oct 8 12:08:21 2009 +0100 build: expose automake conditionals for cogl winsys Expose the ./configured window system/backend options to the Cogl automake files via some new SUPPORT_XYZ conditionals. cogl/Makefile.am | 38 +++++++++++++++++++++++++------------- 1 files changed, 25 insertions(+), 13 deletions(-) commit 5f94a6bf6e0c3712523b5a06d7d147d43e7cccbd Author: Brian Tarricone Date: Thu Mar 25 20:55:31 2010 -0700 eglx: implement cogl_get_proc_address() http://bugzilla.openedhand.com/show_bug.cgi?id=2124 cogl/winsys/cogl-eglx.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit 1eddbe8e1b89bbd73e7401168268862b865a6ddb Author: Neil Roberts Date: Wed May 12 18:57:52 2010 +0100 cogl-material: Set the blend equation even if blend funcs are the same Previously it would only try to set the blend equation if the RGB and alpha blending functions were different. However it's completely valid to use a non-standard blending function when the functions are the same. This patch moves the blending equation to outside the if statement. cogl/cogl-material.c | 28 +++++++++++++--------------- 1 files changed, 13 insertions(+), 15 deletions(-) commit 9ca68bc37a760c1c8e186316929fa99f3098b392 Author: Neil Roberts Date: Wed May 12 15:19:09 2010 +0100 cogl-material: Set blend constant even if alpha and rgb factors are the same Previously it would only set the blend constant if glBlendFuncSeparate was used but it is perfectly acceptable to use the blend constant when the same factor is used for each. It now sets the blend constant whenever one of the factors would use the constant. cogl/cogl-material.c | 26 ++++++++++++++++++++++---- 1 files changed, 22 insertions(+), 4 deletions(-) commit 837eb54db491bed833f0e57c152e97f3b0658961 Author: Neil Roberts Date: Wed May 12 17:56:25 2010 +0100 cogl-blend-string: Don't split combined blend statements into two When a single statement is used to specify the factors for both the RGB and alpha parts it previously split up the statement into two. This works but it ends up unnecessarily using glBlendFuncSeparate when glBlendFunc would suffice. For example, the blend statement RGBA = ADD(SRC_COLOR*(SRC_COLOR), DST_COLOR*(1-SRC_COLOR)) would get split into the two statements RGBA = ADD(SRC_COLOR*(SRC_COLOR[RGB]), DST_COLOR*(1-SRC_COLOR[RGB])) A = ADD(SRC_COLOR*(SRC_COLOR[A]), DST_COLOR*(1-SRC_COLOR[A])) That translates to: glBlendFuncSeparate (GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); This patch makes it so that arg_to_gl_blend_factor can handle the combined RGBA mask instead. That way the single statement gets translated to the equivalent call: glBlendFunc (GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR); cogl/cogl-material.c | 16 +++++----------- 1 files changed, 5 insertions(+), 11 deletions(-) commit 8193e12546caba1a9799e04b1d4400b59b95de60 Author: Neil Roberts Date: Thu Apr 22 11:58:52 2010 +0100 cogl-path: Use true copy-on-write semantics Previously a path copy was implemented such that only the array of path nodes was shared with the source and the rest of the data is copied. This was so that the copy could avoid a deep copy if the source path is appended to because the copy keeps track of its own length. This optimisation is probably not worthwhile because it makes the copies less cheap. Instead the CoglPath struct now just contains a single pointer to a new CoglPathData struct which is separately ref-counted. When the path is modified it will be copied if the ref count on the data is not 1. cogl/cogl-path-private.h | 20 ++-- cogl/cogl-path.c | 249 ++++++++++++++++++++++------------------------ 2 files changed, 125 insertions(+), 144 deletions(-) commit 582bd409dd98f367065866df4e83cf420da0d756 Author: Owen W. Taylor Date: Sat May 8 16:58:14 2010 -0400 cogl-framebuffer: Flush journal when creating fbo Since framebuffer state is not flushed prior to replaying the journal, the trick of marking the framebuffer dirty prior to calling glBindFramebuffer() doesn't work... the outstanding journal entries will get replayed to the newly created framebuffer. Fix this by flushing the journal as well. http://bugzilla.openedhand.com/show_bug.cgi?id=2110 Signed-off-by: Robert Bragg cogl/cogl-framebuffer.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) commit 11532f79ec9283bbf27e13b5909402585a94464d Author: Neil Roberts Date: Thu May 6 14:15:04 2010 +0100 cogl-clip-stack: Set *stencil_used_p when the stack is empty If the clip stack is empty then _cogl_clip_stack_flush exits immediately. This was missing out the assignment of *stencil_used_p at the bottom of the function. If a path is then used after the clip is cleared then it would think it needs to merge with the clip so the stencil would not be cleared correctly. cogl/cogl-clip-stack.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) commit 676c8a5fd4e0a9126a1a735f9e89513e5614a838 Author: Emmanuele Bassi Date: Mon Apr 26 18:08:45 2010 +0100 Implement accessors for the color bits in a framebuffer Instead of using cogl_get_bitmasks() to query the GL machinery for the size of the color bits, we should store the values inside the CoglFramebuffer object and query them the first time we set the framebuffer as the current one. Currently, cogl_get_bitmasks() is re-implemented in terms of cogl_framebuffer_get_*_bits(). As soon as we are able to expose the CoglOnscreen framebuffer object in the public API we'll be able to deprecate cogl_get_bitmasks() altogether. http://bugzilla.openedhand.com/show_bug.cgi?id=2094 cogl/cogl-context.c | 1 + cogl/cogl-framebuffer-private.h | 18 ++++++++++++ cogl/cogl-framebuffer.c | 57 +++++++++++++++++++++++++++++++++++++++ cogl/cogl.c | 24 +++++----------- cogl/cogl.h | 52 +++++++++++++++++++++++++++++++++++ 5 files changed, 135 insertions(+), 17 deletions(-) commit 36298bbe307385f3fc7e08e80281e0df188952fe Author: Neil Roberts Date: Wed May 5 12:05:15 2010 +0100 gles: Fix the functions names for the GL_OES_framebuffer_object ext In 91cde78a7 I accidentally changed the function names that get looked up for the framebuffer extension under GLES so that they didn't have any suffix. The spec for extension specifies that they should have the OES suffix. cogl/driver/gles/cogl-feature-functions.h | 5 +---- 1 files changed, 1 insertions(+), 4 deletions(-) commit 6243a5dc340875597cf64b8e1a6c1eb5840b2b72 Author: Damien Lespiau Date: Mon May 3 20:41:17 2010 +0200 debug: Use G_UNLIKELY in the tests Debugging code is not meant to be run in the nominal code path. Use G_UNLIKELY to be reduce the number of bubbles in the instruction pipeline. Took the opportunity to re-indent the macros. cogl/cogl-debug.h | 20 ++++++++++---------- 1 files changed, 10 insertions(+), 10 deletions(-) commit dc4c0e3d3e7a6471a932640554fdd2f171d38f1f Author: Robert Bragg Date: Fri Apr 30 12:10:16 2010 +0100 debug: wrap glClear calls with the GE macro This adds a GE macro wrapper around our calls to glClear so we can print a warning for any errors reported by the driver. cogl/cogl.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit ebe86985fd505d549c8acbfb45ff8d195ebe3eb5 Author: Neil Roberts Date: Mon Apr 26 12:41:26 2010 +0100 cogl-texture-2d-sliced: Use the converted bitmap when uploading When uploading texture data the cogl-texture-2d-sliced backend was using _cogl_texture_prepare_for_upload to create a bitmap suitable for upload but then it was using the original bitmap instead of the new bitmap for the data. This was causing any format conversions performed by cogl_texture_prepare_for_upload to be ignored. http://bugzilla.openedhand.com/show_bug.cgi?id=2059 cogl/cogl-texture-2d-sliced.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit dae6ab7d7918a98975897e3196e4f7dc4da9c128 Author: Neil Roberts Date: Mon Apr 26 12:30:37 2010 +0100 cogl-texture: Don't attempt to use GL to convert formats under GLES In commit abe91784c4b I changed cogl-texture so that it would use the OpenGL mechanism to specify a different internal texture format from the image format so that it can do the conversion instead of Cogl. However under GLES the internal format and the image format must always be the same and it only supports a limited set of formats. This patch changes _cogl_texture_prepare_for_upload so that it does the conversion using the cogl bitmap code when compiling for GLES. http://bugzilla.openedhand.com/show_bug.cgi?id=2059 cogl/cogl-texture.c | 32 ++++++++++++++++++++++++++++++++ 1 files changed, 32 insertions(+), 0 deletions(-) commit 3e88dee1a3bdb55e9bd712452d636adf6a9547f7 Author: Neil Roberts Date: Tue Apr 27 16:38:07 2010 +0100 cogl-material: Fix the check to prevent using too many layers There was a check at the bottom of the loop which sets up the state for each of the layers so that it would break from the loop when the maximum number of layers is reached. However after doing this it would not increment 'i'. 'i' is later used to disable the remaining layers so it would end up disabling the last layer it just set up. This patch moves the check to be part of the loop condition so that the check is performed after incrementing 'i'. http://bugzilla.openedhand.com/show_bug.cgi?id=2064 cogl/cogl-material.c | 9 ++++----- 1 files changed, 4 insertions(+), 5 deletions(-) commit d5d98500be9ff7c63bd233c4c968f9b61bc54b9d Author: Neil Roberts Date: Tue Apr 27 16:35:35 2010 +0100 cogl-material: Fix the warning for when too many layers are used The warning displayed when too many layers are used had an off-by-one error so that it would display even if exactly the maximum number is used. There was also a missing space at the end of the line in the message which looked wrong when displayed on the terminal. http://bugzilla.openedhand.com/show_bug.cgi?id=2064 cogl/cogl-material.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit edf2bf3d8a5d9a37c9221092fd14a45fd4ef2fca Author: Neil Roberts Date: Thu Apr 22 18:14:40 2010 +0100 cogl-path: Make cogl_path_arc_rel static cogl_path_arc_rel was never in any public headers so it isn't part of the public API. It also has a slightly inconsistent name because the rest of the relative path functions are called cogl_path_rel_*. This patch makes it static for now to make it more obvious that it isn't public. The name has changed to _cogl_path_rel_arc. cogl/cogl-path.c | 56 +++++++++++++++++++++++++++--------------------------- 1 files changed, 28 insertions(+), 28 deletions(-) commit 2b8abbdaa8af0b340bbbae82aeafe0feccb28710 Author: Neil Roberts Date: Thu Apr 22 18:03:57 2010 +0100 cogl-path: Add documentation for the angles of cogl_path_arc This adds documentation for how Cogl interprets the angles given to cogl_path_arc. cogl/cogl-path.h | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) commit 308ca6cb14393c553ee77b15b6cf7d0089df7af8 Author: Neil Roberts Date: Wed Apr 21 22:36:43 2010 +0100 cogl-path: Fix the truncation when adding to a copied path If a path is copied and then appended to, the copy needs to have the last sub path truncated so that it fits in the total path size in case the original path was modified. However the path size check was broken so if the copied path had more than one sub path it would fail. cogl/cogl-path.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 9d93e250d19334062e6a560f67431c5d49292dd2 Author: Neil Roberts Date: Tue Apr 20 14:58:57 2010 +0100 cogl-clip-stack: Use orientation of the polygon to set clip planes Previously the clip stack code was trying to detect when the orientation of the on-screen rectangle had changed by checking if the order of the y-coordinates on the left edge was different from the order the x-coordinates on the top edge. This doesn't work for some rotations which was causing the clip planes to clip the wrong side of the line. This patch makes it detect the orientation by calculating the signed area which is a standard computer graphics algorithm. http://bugzilla.openedhand.com/show_bug.cgi?id=2079 cogl/cogl-clip-stack.c | 43 ++++++++++++++++++++++++------------------- 1 files changed, 24 insertions(+), 19 deletions(-) commit 17a1595cb0776e20e9fa6708190e65ee3af7b995 Author: Neil Roberts Date: Wed Apr 21 11:49:57 2010 +0100 cogl-path: Document how a shape is filled This adds some documentation to cogl_path_fill() describing the fill rule Cogl uses. cogl/cogl-path.h | 28 +++++++++++++++++++++++----- doc/reference/cogl/Makefile.am | 6 +++++- doc/reference/cogl/fill-rule.png | Bin 0 -> 3121 bytes 3 files changed, 28 insertions(+), 6 deletions(-) commit 8afea984376fb4aa4af6ee5e3886473b352ebd9f Author: Neil Roberts Date: Mon Apr 19 18:54:40 2010 +0100 cogl-path: Don't try to union sub paths When drawing a path with only a single sub path, Cogl uses the 'even-odd' fill rule which means that if a part of the path intersects with another part then the intersection would be inverted. However when combining sub paths it treats them as separate paths and then unions them together. This doesn't match the semantics of the even-odd rule in SVG and Cairo. This patch makes it so that a new sub path is just drawn as another triangle fan so that it will continue to invert the stencil buffer. This is also much simpler and more efficient as well as being more correct. http://bugzilla.openedhand.com/show_bug.cgi?id=2088 cogl/cogl-path.c | 24 ------------------------ 1 files changed, 0 insertions(+), 24 deletions(-) commit 7f629f626e25ac7a4678f205c5f0e568582308f8 Author: Neil Roberts Date: Fri Mar 26 22:40:53 2010 +0000 cogl_read_pixels: Always use GL_RGBA/GL_UNSIGNED_BYTE under GLES Under GLES glReadPixels is documented to only support GL_RGBA with GL_UNSIGNED_BYTE and an implementation specfic format which can be fetched with glGet, GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES and GL_IMPLEMENTATION_COLOR_READ_TYPE_OES. This patch makes it always read using GL_RGBA and GL_UNSIGNED_BYTE and then convert the results if neccessary. This has some room for improvement because it doesn't attempt to use the implementation specific format. Also the conversion is somewhat wasteful because there are currently no cogl_bitmap_* functions to convert without allocating a new buffer so it ends up doing an intermediate copy. http://bugzilla.openedhand.com/show_bug.cgi?id=2057 cogl/cogl.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 58 insertions(+), 9 deletions(-) commit f944d419a3cb1e893fd9f0166ca17b23d9463452 Author: Neil Roberts Date: Fri Mar 26 22:34:56 2010 +0000 cogl-bitmap: Fix converting formats with and without alpha channels _cogl_bitmap_convert_format_and_premult was failing when converting from RGBA to RGB and vice versa. _cogl_bitmap_fallback_convert converts without altering the premult status so when choosing a new format it would copy over the premult bit. However, it did this regardless of whether the new format had an alpha channel so when converting from RGBA_8888_PRE to RGB_888 it would end up inventing a new meaningless format which would be RGB_888_PRE. This patch makes it avoid copying the premult flag if the destination has no alpha. It doesn't matter if it copies when the source format has no alpha because it will always be unset. _cogl_bitmap_convert_format_and_premult was also breaking when converting from RGBA_8888_PRE to RGB_888 because it would think RGB_888 is unpremultiplied and try to convert but then _cogl_bitmap_fallback_premult wouldn't know how to do the conversion. http://bugzilla.openedhand.com/show_bug.cgi?id=2057 cogl/cogl-bitmap-fallback.c | 8 ++++++-- cogl/cogl-bitmap.c | 10 +++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) commit 30c4678ff4c7fdcded9756333cd220a67ba26125 Author: Neil Roberts Date: Thu Apr 15 10:58:28 2010 +0100 cogl: Implement retained clip stacks This adds three new internal API functions which can be used to retain the clip stack state and restore it later: _cogl_get_clip_stack _cogl_set_clip_stack _cogl_clip_stack_copy The functions are currently internal and not yet used but we may want to make them public in future to replace the cogl_clip_stack_save() and cogl_clip_stack_restore() APIs. The get function just returns the handle to the clip stack at the top of the stack of stacks and the set function just replaces it. The copy function makes a cheap copy of an existing stack by taking a reference to the top stack entry. This ends up working like a deep copy because there is no way to modify entries of a stack but it doesn't actually copy the data. cogl/cogl-clip-stack.c | 26 ++++++++++++++++++++++++++ cogl/cogl-clip-stack.h | 19 +++++++++++++++++++ cogl/cogl-clip-state.c | 34 ++++++++++++++++++++++++++++++++++ cogl/cogl-clip-state.h | 28 ++++++++++++++++++++++++++++ 4 files changed, 107 insertions(+), 0 deletions(-) commit 84b87e811e0152dfd6a55930c62d1211f808b8e1 Author: Neil Roberts Date: Thu Apr 15 10:27:43 2010 +0100 cogl-clip-stack: Convert to be a CoglHandle CoglClipStacks can now be reference counted via a CoglHandle. The ClipClipState now stores handles in the list rather than CoglClipStack pointers. cogl/cogl-clip-stack.c | 28 +++++++++++++++++++++------- cogl/cogl-clip-stack.h | 17 ++++++----------- cogl/cogl-clip-state.c | 16 ++++++++-------- 3 files changed, 35 insertions(+), 26 deletions(-) commit f6f375cb369266b34a5c766b6d964356981dd852 Author: Neil Roberts Date: Wed Apr 14 19:41:08 2010 +0100 Separate out CoglClipStackState from cogl-clip-stack.c CoglClipStackState has now been renamed to CoglClipState and is moved to a separate file. CoglClipStack now just maintains a stack and doesn't worry about the rest of the state. CoglClipStack sill contains the code to flush the stack to GL. cogl/Makefile.am | 2 + cogl/cogl-clip-stack.c | 349 +++------------------------------- cogl/cogl-clip-stack.h | 37 +++-- cogl/cogl-clip-state.c | 405 +++++++++++++++++++++++++++++++++++++++ cogl/cogl-clip-state.h | 50 +++++ cogl/cogl-framebuffer-private.h | 6 +- cogl/cogl-framebuffer.c | 10 +- cogl/cogl-path.c | 4 +- cogl/cogl.c | 2 +- 9 files changed, 519 insertions(+), 346 deletions(-) commit 07a76aacfbdb8ac1d1e19c18eaacf41b87cee1a5 Author: Neil Roberts Date: Wed Apr 14 18:47:25 2010 +0100 cogl-slip-stack: Store clip window rect entries in Cogl coordinates When glScissor is called it needs to pass coordinates in GL's coordinate space where the origin is the bottom left. Previously this conversion was done before storing the window rect in the clip stack. However this might make it more difficult if we want to be able to grab a handle to a clip stack and use it in different circumstances later. This patch moves the coordinate conversion to inside the clip state flushing code. cogl/cogl-clip-stack.c | 57 +++++++++++++++++++++++++++--------------------- 1 files changed, 32 insertions(+), 25 deletions(-) commit 2f631464743400ee4447ac872012fa85cc2c30ff Author: Neil Roberts Date: Wed Apr 14 15:42:57 2010 +0100 cogl-clip-stack: Store window rect entries as ints not floats The window rectangles are passed in as integers so there is no point in converting them to floats when storing a stack entry for them. cogl/cogl-clip-stack.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 71fdc54dde65f87f55a7c3da795a5b3d81ee06e2 Author: Neil Roberts Date: Wed Apr 14 13:17:26 2010 +0100 cogl-clip-stack: Use reference counted stack entries The stack is now stored as a list of reference counted entries. Instead of using a GList, each entry now contains a link with a reference to its parent. The idea is that this would allow copying stacks with a shared ancestry. Previously the code flushed the state by finding the bottom of the stack and then applying each entry by walking back up to the top. This is slightly harder to do now because the list is no longer doubly-linked. However I don't think it matters which order the entries are applied so I've just changed it to apply them in reverse order. There was also a restriction that if ever the stencil buffer is used then we could no longer use clip planes for any subsequent entries. I don't think this makes sense because it should always work as long as it doesn't attempt to use the clip planes more than once. I've therefore removed the restriction. cogl/cogl-clip-stack.c | 207 ++++++++++++++++++++++++++++++++++-------------- 1 files changed, 149 insertions(+), 58 deletions(-) commit ecf65cd4a5c904918aba419db2461c9a4527c83b Author: Neil Roberts Date: Tue Apr 13 17:26:03 2010 +0100 cogl-atlas-texture: Fix a memory leak The CoglAtlasTexture struct was not being freed in _cogl_atlas_texture_free so there would be a small leak whenever a texture was destroyed. Thanks to Robert Bragg for spotting this. cogl/cogl-atlas-texture.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 3769862323f71fc04d8352e32fc385b1c916e37f Author: Neil Roberts Date: Thu Apr 1 18:35:32 2010 +0100 cogl-material: Use CLAMP_TO_EDGE for WRAP_AUTOMATIC unless overriden CoglMaterial now sets GL_CLAMP_TO_EDGE if WRAP_MODE_AUTOMATIC is used unless it is overridden when the material is flushed. The primitives are still expected to expose repeat semantics so no user visible changes are made. The idea is that drawing non-repeated textures is the most common case so if we make clamp_to_ege the default then we will reduce the number of times we have to override the material. Avoiding overrides will become important if the overriding mechanism is replaced with one where the primitive is expected to copy the material and change that instead. cogl/cogl-material.c | 6 +- cogl/cogl-primitives.c | 104 ++++++++++++++++++++++++++++++++++---------- cogl/cogl-vertex-buffer.c | 35 ++++++++++++++- 3 files changed, 115 insertions(+), 30 deletions(-) commit e007bc5358e19612bb5c8176733c1d1bb9dd66c8 Author: Neil Roberts Date: Thu Apr 1 11:31:33 2010 +0100 cogl-material: Add support for setting the wrap mode for a layer Previously, Cogl's texture coordinate system was effectively always GL_REPEAT so that if an application specifies coordinates outside the range 0→1 it would get repeated copies of the texture. It would however change the mode to GL_CLAMP_TO_EDGE if all of the coordinates are in the range 0→1 so that in the common case that the whole texture is being drawn with linear filtering it will not blend in edge pixels from the opposite sides. This patch adds the option for applications to change the wrap mode per layer. There are now three wrap modes: 'repeat', 'clamp-to-edge' and 'automatic'. The automatic map mode is the default and it implements the previous behaviour. The wrap mode can be changed for the s and t coordinates independently. I've tried to make the internals support setting the r coordinate but as we don't support 3D textures yet I haven't exposed any public API for it. The texture backends still have a set_wrap_mode virtual but this value is intended to be transitory and it will be changed whenever the material is flushed (although the backends are expected to cache it so that it won't use too many GL calls). In my understanding this value was always meant to be transitory and all primitives were meant to set the value before drawing. However there were comments suggesting that this is not the expected behaviour. In particular the vertex buffer drawing code never set a wrap mode so it would end up with whatever the texture was previously used for. These issues are now fixed because the material will always set the wrap modes. There is code to manually implement clamp-to-edge for textures that can't be hardware repeated. However this doesn't fully work because it relies on being able to draw the stretched parts using quads with the same values for tx1 and tx2. The texture iteration code doesn't support this so it breaks. This is a separate bug and it isn't trivially solved. When flushing a material there are now extra options to set wrap mode overrides. The overrides are an array of values for each layer that specifies an override for the s, t or r coordinates. The primitives use this to implement the automatic wrap mode. cogl_polygon also uses it to set GL_CLAMP_TO_BORDER mode for its trick to render sliced textures. Although this code has been added it looks like the sliced trick has been broken for a while and I haven't attempted to fix it here. I've added a constant to represent the maximum number of layers that a material supports so that I can size the overrides array. I've set it to 32 because as far as I can tell we have that limit imposed anyway because the other flush options use a guint32 to store a flag about each layer. The overrides array ends up adding 32 bytes to each flush options struct which may be a concern. http://bugzilla.openedhand.com/show_bug.cgi?id=2063 cogl/cogl-journal-private.h | 2 + cogl/cogl-journal.c | 7 + cogl/cogl-material-private.h | 56 +++++++-- cogl/cogl-material.c | 221 ++++++++++++++++++++++++++++++++- cogl/cogl-material.h | 104 ++++++++++++++++ cogl/cogl-primitives.c | 174 ++++++++++++++++++++++----- cogl/cogl-texture-2d-sliced.c | 4 - cogl/cogl-texture-2d.c | 4 - doc/reference/cogl/cogl-sections.txt | 5 + 9 files changed, 524 insertions(+), 53 deletions(-) commit fb7f1a7fd63c537d473a33557603bcd63745398e Author: Neil Roberts Date: Thu Mar 25 17:29:22 2010 +0000 Split the wrap mode of _cogl_texture_set_wrap_mode into three GL supports setting different wrap modes for the s, t and r coordinates so we should design the backend interface to support that also. The r coordinate is not currently used by any of the backends but we might as well have it to make life easier if we ever add support for 3D textures. http://bugzilla.openedhand.com/show_bug.cgi?id=2063 cogl/cogl-atlas-texture.c | 13 +++++++++---- cogl/cogl-primitives.c | 16 ++++++++++++---- cogl/cogl-sub-texture.c | 13 +++++++++---- cogl/cogl-texture-2d-private.h | 3 ++- cogl/cogl-texture-2d-sliced-private.h | 3 ++- cogl/cogl-texture-2d-sliced.c | 31 ++++++++++++++++++++----------- cogl/cogl-texture-2d.c | 26 ++++++++++++++++---------- cogl/cogl-texture-private.h | 13 +++++++++---- cogl/cogl-texture.c | 11 ++++++++--- 9 files changed, 87 insertions(+), 42 deletions(-) commit 908be0480cb8f1d9f3da50a962e9064f2252b261 Author: Neil Roberts Date: Thu Apr 1 20:06:30 2010 +0100 cogl: Make private members really hard to accidentally use CoglColor and CoglMatrix have public declarations with private members so that we are free to change the implementation but the structures could still be allocated on the stack in applications. However it's quite easy not to realise the members are private and then access them directly. This patch wraps the members in a macro which redefines the symbol name when including the header outside of the clutter source. http://bugzilla.openedhand.com/show_bug.cgi?id=2065 cogl/cogl-matrix.h | 9 +++++---- cogl/cogl-types.h | 24 +++++++++++++++++------- 2 files changed, 22 insertions(+), 11 deletions(-) commit dedb753d3075353939840a13ab3c6e850dabfc6f Author: Neil Roberts Date: Mon Apr 12 15:16:58 2010 +0100 CoglMatrix: Don't make the matrix fields private The xx, yx, zx etc fields are meant to be read-only but they were marked as private with the gtk-doc annotation. This patch moves the private marker so that the 16 float member fields are public but the type, inverted matrix, flags and padding are not. cogl/cogl-matrix.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 232c960b67f1802b6bfe61ae70f3b6df5332762d Author: Neil Roberts Date: Mon Apr 12 12:06:03 2010 +0100 Fix indentation in CoglMatrix The members of CoglMatrix were indented by 4 characters instead of 2. cogl/cogl-matrix.h | 54 ++++++++++++++++++++++++++-------------------------- 1 files changed, 27 insertions(+), 27 deletions(-) commit 067a520f26116759fc9717bbbb74b4c2c1590092 Author: Neil Roberts Date: Thu Apr 8 17:43:27 2010 +0100 cogl: Support retained paths This adds three new API calls: CoglHandle cogl_path_get() void cogl_path_set(CoglHandle path) CoglHandle cogl_path_copy(CoglHandle path) All of the fields relating to the path have been moved from the Cogl context to a new CoglPath handle type. The cogl context now just contains a CoglPath handle. All of the existing path commands manipulate the data in the current path handle. cogl_path_new now just creates a new path handle and unrefs the old one. The path handle can be stored for later with cogl_path_get. The path can then be copied with cogl_path_copy. Internally it implements copy-on-write semantics with an extra optimisation that it will only copy the data if the new path is modified, but not if the original path is modified. It can do this because the only way to modify a path is by appending to it so the copied path is able to store its own path length and only render the nodes up to that length. For this to work the copied path also needs to keep its own copies of the path extents because the parent path may change these by adding nodes. The clip stack now uses the cogl_path_copy mechanism to store paths in the stack instead of directly copying the data. This should save some memory and processing time. cogl/Makefile.am | 1 + cogl/cogl-clip-stack.c | 37 +--- cogl/cogl-context.c | 8 +- cogl/cogl-context.h | 7 +- cogl/cogl-internal.h | 28 --- cogl/cogl-path-private.h | 96 ++++++++++ cogl/cogl-path.c | 333 +++++++++++++++++++++++++--------- cogl/cogl-path.h | 46 +++++ doc/reference/cogl/cogl-sections.txt | 3 + 9 files changed, 413 insertions(+), 146 deletions(-) commit d1353b3c1a6ec020ce74c30255fc3777313571c1 Author: Robert Bragg Date: Thu Apr 8 14:37:01 2010 +0100 cogl: renames cogl_multiply_matrix to cogl_transform Although cogl_multiply_matrix was consistent with OpenGL, after further consideration it was agreed that cogl_transform is a better name. Given that it's in the global cogl_ namespace cogl_transform seems more self documenting. cogl/cogl.c | 2 +- cogl/cogl.h | 4 ++-- doc/reference/cogl/cogl-sections.txt | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) commit 58e4ec07988433f6f17a1a45cd96ce25aa641aca Author: Robert Bragg Date: Thu Apr 1 13:15:12 2010 +0100 docs: This improves the documentation for cogl_push_framebuffer This adds an example of how to setup a Clutter style 2D coordinate space and clarifies what state is owned by a framebuffer. (projection, modelview, viewport and clip stack) When we expose more cogl_framebuffer API this example will hopefully be migrated into a more extensive introduction to using framebuffers. cogl/cogl.h | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 75 insertions(+), 10 deletions(-) commit c49aeed2bf2de0e59b15a8a8f45d290fded6bc77 Author: Robert Bragg Date: Fri Mar 19 09:55:30 2010 +0000 cogl: move cogl_set_source* funcs into cogl.c Previously cogl_set_source and cogl_set_source_texture were in cogl-material.c and the cogl_set_source_color* funcs were in cogl-color.c. Originally this was because cogl.c was duplicated between the GL and GLES backends and we didn't want to add to the amount of duplicated code, but these files have since been consolidated into one cogl.c. cogl/cogl-color.c | 24 -------------------- cogl/cogl-material.c | 36 ------------------------------ cogl/cogl.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 59 insertions(+), 61 deletions(-) commit 6c8c0714f67866c42e1d7b4e1e5da60f16647f77 Author: Robert Bragg Date: Fri Mar 19 09:30:59 2010 +0000 cogl: adds convenience cogl_multiply_matrix function Quite often it's desirable to be able to multiply the current modelview matrix by an arbitrary matrix. Currently though you have to first explicitly call cogl_get_modelview_matrix to get the current modelview into a temporary variable, then you need to multiply it with your matrix using cogl_matrix_multiply and finally use cogl_set_modelview_matrix to make the result be the new modelview. This new convenience function lets more efficiently skip the first get and last set steps. cogl/cogl.c | 8 ++++++++ cogl/cogl.h | 11 +++++++++++ 2 files changed, 19 insertions(+), 0 deletions(-) commit 1f715ad153faf54b8c772ac7e3b770316f6d79f0 Author: Robert Bragg Date: Fri Mar 19 09:16:08 2010 +0000 cogl: rename cogl_enable to _cogl_enable Every now and then someone sees the cogl_enable API and gets confused, thinking its public API so this renames the symbol to be clear that it's is an internal only API. cogl/cogl-context.c | 2 +- cogl/cogl-internal.h | 4 +- cogl/cogl-journal.c | 6 ++-- cogl/cogl-material.c | 2 +- cogl/cogl-path.c | 10 ++++---- cogl/cogl-primitives.c | 2 +- cogl/cogl-vertex-buffer.c | 2 +- cogl/cogl.c | 52 ++++++++++++++++++++++---------------------- 8 files changed, 40 insertions(+), 40 deletions(-) commit 40155e64d8c604de5b120dfe75330e632b517955 Author: Emmanuele Bassi Date: Thu Mar 25 09:45:59 2010 +0000 docs: Add 1.4 index to the API references Now that master has branched for the 1.3 development cycle. doc/reference/cogl/cogl-docs.xml.in | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit 93754d8dc04d7841e0b51e1750f68f015c9e4e71 Author: Emmanuele Bassi Date: Thu Mar 25 09:33:26 2010 +0000 Use begin/end macros in cogl-primitives.h Protect the people using a C++ compiler from the dark abyss of C code. http://bugzilla.openedhand.com/show_bug.cgi?id=2049 cogl/cogl-primitives.h | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit e573eaf2ed8c928d9cfa5a7db393cf00b75dba67 Author: Owen W. Taylor Date: Tue Mar 16 20:38:53 2010 -0400 Switch texture units before calling _cogl_texture_set_filters() When setting up the state for a layer, we need to switch texture units before we do anything that might bind the texture, or we'll bind the wrong texture to the previous unit. http://bugzilla.openedhand.com/show_bug.cgi?id=2033 Signed-off-by: Emmanuele Bassi cogl/cogl-material.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) commit e1aec639800046236605a27f662744b245e72c7b Author: Owen W. Taylor Date: Wed Mar 17 15:39:55 2010 -0400 Set pixel store parameters before calling glGetTexImage We need to set up the rowstride and alignment properly in CoglTexture2D before reading texture data. http://bugzilla.openedhand.com/show_bug.cgi?id=2036 Signed-off-by: Emmanuele Bassi cogl/cogl-texture-2d.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 89519a1d33e51d6db06c89a9e9d43dd7473210de Author: Colin Walters Date: Fri Mar 12 17:39:27 2010 -0500 Return and warn if a handle's refcount is <= 0 This makes it more likely consumers notice invalid unreferences. GObject has the same assertion. http://bugzilla.openedhand.com/show_bug.cgi?id=2029 Signed-off-by: Emmanuele Bassi cogl/cogl-util.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 9fc9aa562e7ca0def0d1118802860333e3cbdb89 Author: Neil Roberts Date: Tue Mar 9 16:37:52 2010 -0800 cogl-texture-2d: Determine format before checking texture support When entering cogl_texture_2d_new_from_bitmap the internal format can be COGL_PIXEL_FORMAT_ANY. This was causing _cogl_texture_2d_can_create to use an invalid GL format type. Mesa apparently ignores this but it was causing errors when Cogl is compiled with debugging under NVidia. http://bugzilla.openedhand.com/show_bug.cgi?id=2026 cogl/cogl-texture-2d.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 770ca1311d5c4638b435ece90843f89b4d3fa0d7 Author: Owen W. Taylor Date: Mon Mar 1 16:49:04 2010 -0500 Fix checks for out-of-bounds coordinates and repeats Add a return result from CoglTexture.transform_quad_coords_to_gl(), so that we can properly determine the nature of repeats in the face of GL_TEXTURE_RECTANGLE_ARB, where the returned coordinates are not normalized. The comment "We also work out whether any of the texture coordinates are outside the range [0.0,1.0]. We need to do this after calling transform_coords_to_gl in case the texture backend is munging the coordinates (such as in the sub texture backend)." is disregarded and removed, since it's actually the virtual coordinates that determine whether we repeat, not the GL coordinates. Warnings about disregarded layers are used in all cases where applicable, including for subtextures. http://bugzilla.openedhand.com/show_bug.cgi?id=2016 Signed-off-by: Neil Roberts cogl/cogl-atlas-texture.c | 2 +- cogl/cogl-primitives.c | 40 ++++++++++++++-------------------------- cogl/cogl-sub-texture.c | 9 ++++----- cogl/cogl-texture-2d-sliced.c | 22 +++++++++++++++++++--- cogl/cogl-texture-2d.c | 15 ++++++++++++--- cogl/cogl-texture-private.h | 18 +++++++++++++++--- cogl/cogl-texture.c | 2 +- 7 files changed, 66 insertions(+), 42 deletions(-) commit ec9adfd1d400e3c783cd75ea2893575585f08ce3 Author: Owen W. Taylor Date: Mon Mar 1 14:04:20 2010 -0500 CoglTexture2DSliced: Handle TEXTURE_RECTANGLE_ARB In _cogl_texture_2d_sliced_foreach_sub_texture_in_region(), don't assert that the target is GL_TEXTURE_2D; instead conditionalize normalization on the target. http://bugzilla.openedhand.com/show_bug.cgi?id=2015 cogl/cogl-texture-2d-sliced.c | 22 +++++++++++++--------- 1 files changed, 13 insertions(+), 9 deletions(-) commit edecd668c86486409dce168655a3ea0f9b675df2 Author: Emmanuele Bassi Date: Wed Mar 3 17:02:51 2010 +0000 Update stb_image.c Upstream "released" 1.18. cogl/stb_image.c | 1605 +++++++++++++++++++++++++++++------------------------- 1 files changed, 862 insertions(+), 743 deletions(-) commit c3917c8da587f7ad0e5a6ffe6b383355fcf2821b Author: Robert Bragg Date: Tue Mar 2 02:07:40 2010 +0000 cogl debug: Adds missing guards around debug cogl_args[] commit 511e5ceb516dc accidentally removed the #ifdef COGL_ENABLE_DEBUG guards around the "cogl-debug" and "cogl-no-debug" cogl_args[] which this patch restores. cogl/cogl-debug.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit d32b4b1c127cf019787e6cf0dae608f9175a88da Merge: d29b3c8 84223c8 Author: Emmanuele Bassi Date: Tue Mar 2 12:25:45 2010 +0000 Merge branch 'eglnative-update' * eglnative-update: eglnative: Add CLUTTER_FB_DEVICE eglnative: Update implementation commit d29b3c8f81d235aeac648df330bbd1a3acedfee6 Author: Owen W. Taylor Date: Mon Mar 1 13:54:03 2010 -0500 Fall back in _cogl_texture_2d_new_from_bitmap() Just like _cogl_texture_2d_new_with_size(), _cogl_texture_2d_new_from_bitmap() needs to check if an unsliced texture can be created at the given size, or if hardware limitations prevent this. http://bugzilla.openedhand.com/show_bug.cgi?id=2014 Signed-off-by: Neil Roberts cogl/cogl-texture-2d.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 84223c855db7b574240b76a0eb2925f99f7cde15 Author: Neil Roberts Date: Mon Mar 1 18:08:41 2010 +0000 cogl: Support any format in cogl_read_pixels cogl_read_pixels() no longer asserts that the format passed in is RGBA_8888 but instead accepts any format. The appropriate GL enums for the format are passed to glReadPixels so OpenGL should be perform a conversion if neccessary. It currently assumes glReadPixels will always give us premultiplied data. This will usually be correct because the result of the default blending operations for Cogl ends up with premultiplied data in the framebuffer. However it is possible for the framebuffer to be in whatever format depending on what CoglMaterial is used to render to it. Eventually we may want to add a way for an application to inform Cogl that the framebuffer is not premultiplied in case it is being used for some special purpose. If the requested format is not premultiplied then Cogl will convert it. The tests have been changed to read the data as premultiplied so that they won't be affected by the conversion. Picking in Clutter has been changed to use COGL_PIXEL_FORMAT_RGB_888 because it doesn't need the alpha component. clutter_stage_read_pixels is left unchanged because the application can't specify a format for that so it seems to make most sense to store unpremultiplied values. http://bugzilla.openedhand.com/show_bug.cgi?id=1959 cogl/cogl.c | 84 ++++++++++++++++++++++++++++++++++++++++------------------- cogl/cogl.h | 8 +++++- 2 files changed, 64 insertions(+), 28 deletions(-) commit 672a77453f93c53df8a3855fbdfcd09d1861fe89 Merge: 72f4ddf 984c19a Author: Emmanuele Bassi Date: Mon Mar 1 15:37:12 2010 +0000 Merge branch 'stage-min-size-rework' * stage-min-size-rework: docs: Update minimum size accessors actor: Use the TOPLEVEL flag instead of a type check [stage] Use min-width/height props for min size commit 72f4ddf5324137f451bd54192f687f2eae8efee4 Author: Emmanuele Bassi Date: Mon Mar 1 12:56:10 2010 +0000 Remove mentions of the FSF address Since using addresses that might change is something that finally the FSF acknowledge as a plausible scenario (after changing address twice), the license blurb in the source files should use the URI for getting the license in case the library did not come with it. Not that URIs cannot possibly change, but at least it's easier to set up a redirection at the same place. As a side note: this commit closes the oldes bug in Clutter's bug report tool. http://bugzilla.openedhand.com/show_bug.cgi?id=521 cogl/cogl-atlas-texture-private.h | 6 +++--- cogl/cogl-atlas-texture.c | 6 +++--- cogl/cogl-atlas.c | 6 +++--- cogl/cogl-atlas.h | 6 +++--- cogl/cogl-bitmap-fallback.c | 6 +++--- cogl/cogl-bitmap-pixbuf.c | 6 +++--- cogl/cogl-bitmap-private.h | 6 +++--- cogl/cogl-bitmap.c | 6 +++--- cogl/cogl-bitmap.h | 6 +++--- cogl/cogl-blend-string.c | 6 +++--- cogl/cogl-blend-string.h | 6 +++--- cogl/cogl-buffer-private.h | 6 +++--- cogl/cogl-buffer.c | 6 +++--- cogl/cogl-buffer.h | 6 +++--- cogl/cogl-clip-stack.c | 6 +++--- cogl/cogl-clip-stack.h | 6 +++--- cogl/cogl-color.c | 6 +++--- cogl/cogl-color.h | 6 +++--- cogl/cogl-context.c | 6 +++--- cogl/cogl-context.h | 6 +++--- cogl/cogl-debug.c | 6 +++--- cogl/cogl-debug.h | 6 +++--- cogl/cogl-deprecated.h | 6 +++--- cogl/cogl-feature-private.c | 6 +++--- cogl/cogl-feature-private.h | 6 +++--- cogl/cogl-fixed.c | 6 +++--- cogl/cogl-fixed.h | 6 +++--- cogl/cogl-framebuffer-private.h | 6 +++--- cogl/cogl-framebuffer.c | 6 +++--- cogl/cogl-handle.h | 6 +++--- cogl/cogl-internal.h | 6 +++--- cogl/cogl-journal-private.h | 6 +++--- cogl/cogl-journal.c | 6 +++--- cogl/cogl-material-private.h | 6 +++--- cogl/cogl-material.c | 6 +++--- cogl/cogl-material.h | 6 +++--- cogl/cogl-matrix-mesa.c | 6 +++--- cogl/cogl-matrix-mesa.h | 6 +++--- cogl/cogl-matrix-private.h | 6 +++--- cogl/cogl-matrix-stack.c | 6 +++--- cogl/cogl-matrix-stack.h | 6 +++--- cogl/cogl-matrix.c | 6 +++--- cogl/cogl-matrix.h | 6 +++--- cogl/cogl-offscreen.h | 6 +++--- cogl/cogl-path.c | 6 +++--- cogl/cogl-path.h | 6 +++--- cogl/cogl-pixel-buffer-private.h | 6 +++--- cogl/cogl-pixel-buffer.c | 6 +++--- cogl/cogl-pixel-buffer.h | 6 +++--- cogl/cogl-primitives.c | 6 +++--- cogl/cogl-primitives.h | 6 +++--- cogl/cogl-profile.h | 6 +++--- cogl/cogl-shader.h | 6 +++--- cogl/cogl-spans.c | 6 +++--- cogl/cogl-spans.h | 6 +++--- cogl/cogl-sub-texture-private.h | 6 +++--- cogl/cogl-sub-texture.c | 6 +++--- cogl/cogl-texture-2d-private.h | 6 +++--- cogl/cogl-texture-2d-sliced-private.h | 6 +++--- cogl/cogl-texture-2d-sliced.c | 6 +++--- cogl/cogl-texture-2d.c | 6 +++--- cogl/cogl-texture-driver.h | 6 +++--- cogl/cogl-texture-private.h | 6 +++--- cogl/cogl-texture.c | 6 +++--- cogl/cogl-texture.h | 6 +++--- cogl/cogl-types.h | 6 +++--- cogl/cogl-util.c | 6 +++--- cogl/cogl-util.h | 6 +++--- cogl/cogl-vertex-buffer-private.h | 6 +++--- cogl/cogl-vertex-buffer.c | 6 +++--- cogl/cogl-vertex-buffer.h | 6 +++--- cogl/cogl.c | 6 +++--- cogl/cogl.h | 6 +++--- cogl/driver/gl/cogl-context-driver.c | 6 +++--- cogl/driver/gl/cogl-context-driver.h | 6 +++--- cogl/driver/gl/cogl-defines.h.in | 6 +++--- cogl/driver/gl/cogl-feature-functions.h | 6 +++--- cogl/driver/gl/cogl-program.c | 6 +++--- cogl/driver/gl/cogl-program.h | 6 +++--- cogl/driver/gl/cogl-shader-private.h | 6 +++--- cogl/driver/gl/cogl-shader.c | 6 +++--- cogl/driver/gl/cogl-texture-driver.c | 6 +++--- cogl/driver/gl/cogl.c | 6 +++--- cogl/driver/gles/cogl-context-driver.c | 6 +++--- cogl/driver/gles/cogl-context-driver.h | 6 +++--- cogl/driver/gles/cogl-defines.h.in | 6 +++--- cogl/driver/gles/cogl-feature-functions.h | 6 +++--- cogl/driver/gles/cogl-gles2-wrapper.c | 6 +++--- cogl/driver/gles/cogl-gles2-wrapper.h | 6 +++--- cogl/driver/gles/cogl-program.c | 6 +++--- cogl/driver/gles/cogl-program.h | 6 +++--- cogl/driver/gles/cogl-shader-private.h | 6 +++--- cogl/driver/gles/cogl-shader.c | 6 +++--- cogl/driver/gles/cogl-texture-driver.c | 6 +++--- cogl/driver/gles/cogl.c | 6 +++--- cogl/winsys/cogl-eglnative.c | 6 +++--- cogl/winsys/cogl-eglx.c | 6 +++--- cogl/winsys/cogl-fruity.c | 6 +++--- cogl/winsys/cogl-glx.c | 6 +++--- cogl/winsys/cogl-osx.c | 6 +++--- cogl/winsys/cogl-sdl.c | 6 +++--- cogl/winsys/cogl-win32.c | 6 +++--- cogl/winsys/cogl-winsys.h | 6 +++--- 103 files changed, 309 insertions(+), 309 deletions(-) commit 82fd07c54af5f6641fbf5e0952c930ec32ef70c6 Author: Neil Roberts Date: Tue Feb 23 14:45:44 2010 +0000 cogl-vertex-buffer: Add support for unsigned int indices This adds a COGL_INDICES_TYPE_UNSIGNED_INT enum value so that unsigned ints can be used with cogl_vertex_buffer_indices_new. Unsigned ints are not supported in core on GLES so a feature flag has also been added to advertise this. GLES only sets the feature if the GL_OES_element_index_uint extension is available. It is an error to call indices_new() with unsigned ints unless the feature is advertised. http://bugzilla.openedhand.com/show_bug.cgi?id=1998 cogl/cogl-types.h | 6 +++++- cogl/cogl-vertex-buffer.c | 17 ++++++++++++++++- cogl/cogl-vertex-buffer.h | 8 ++++++++ cogl/driver/gl/cogl.c | 3 ++- cogl/driver/gles/cogl-feature-functions.h | 6 ++++++ 5 files changed, 37 insertions(+), 3 deletions(-) commit b583083a3fc4ec5368ee662b9338c8f32a59daaf Author: Neil Roberts Date: Wed Feb 24 11:13:55 2010 +0000 gles2: Remove the special wrapper for glBindTexture Previously the GLES2 backend needed a special wrapper for glBindTexture because it needed to know the internal GL format of the texture in order to correctly implement the GL_MODULATE texture env mode. When GL_MODULATE is used then the RGB values are taken from the previous texture layer rather than being fetched from the texture. However since the material API was added Cogl no longer uses the GL_MODULATE texture env mode but instead always uses GL_COMBINE. Compiling the GLES2 backend broke since the more-texture-backends branch merge because the cogl_get_internal_gl_format function was removed and there was one place in GLES2 specific code that was using this to bind the texture. cogl/cogl-material.c | 10 ---------- cogl/cogl-texture-2d-sliced.c | 5 ++--- cogl/cogl-texture-driver.h | 7 ------- cogl/driver/gl/cogl-texture-driver.c | 12 ------------ cogl/driver/gles/cogl-gles2-wrapper.c | 22 ---------------------- cogl/driver/gles/cogl-gles2-wrapper.h | 12 ------------ cogl/driver/gles/cogl-texture-driver.c | 13 ------------- 7 files changed, 2 insertions(+), 79 deletions(-) commit cb7a99ac69ac76b62b7cab082105d41442214312 Author: Neil Roberts Date: Wed Feb 24 16:50:32 2010 +0000 cogl-gles2-wrapper: Add support for the layer combine operations The texture layer combine functions are now hard coded to GL_COMBINE instead of GL_MODULATE. The combine function can be customized with all the parameters of GL_COMBINE. A shader is generated to implement the given parameters. Currently it will try to generate code for the constant color but it will use a uniform which does not exist. cogl/cogl-blend-string.c | 9 - cogl/driver/gles/cogl-gles2-wrapper.c | 382 ++++++++++++++++++++++++++++++--- cogl/driver/gles/cogl-gles2-wrapper.h | 16 ++ 3 files changed, 371 insertions(+), 36 deletions(-) commit 7dce5d937290a01c425ace6199e18fce5580f84e Author: Neil Roberts Date: Wed Feb 24 10:42:59 2010 +0000 gles2: Implement a wrapper for glGetIntegerv(GL_MAX_TEXTURE_UNITS) The GLES2 backend for Cogl is failing to compile because GL_MAX_TEXTURE_UNITS is not defined. Let's define it and provide a wrapper which uses GL_MAX_TEXTURE_IMAGE_UNITS or COGL_GLES2_MAX_TEXTURE_UNITS, whichever is the smallest. cogl/driver/gles/cogl-gles2-wrapper.c | 6 ++++++ cogl/driver/gles/cogl-gles2-wrapper.h | 2 ++ 2 files changed, 8 insertions(+), 0 deletions(-) commit 984c19a6f7b75d0e9068a22b15545260dafba4a5 Author: Emmanuele Bassi Date: Wed Feb 24 11:28:44 2010 +0000 docs: Detail replacement for cogl_check_extension() The cogl_check_extension() function has been deprecated, but it's easily replaceable with a simple strstr() call. cogl/cogl.h | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-) commit f9fe4526ebb79de87c4bf456efbf6f544525f1a6 Author: Robert Bragg Date: Wed Feb 17 18:45:08 2010 +0000 cogl debug: Adds glViewport call tracing To aid in the debugging of Clutter stage resize issues this adds a COGL_DEBUG=opengl option that will trace "some select OpenGL calls" (currently just glViewport calls) cogl/cogl-debug.c | 2 ++ cogl/cogl-debug.h | 3 ++- cogl/cogl-framebuffer.c | 6 ++++++ 3 files changed, 10 insertions(+), 1 deletions(-) commit 5751e4875624d6a68e635f1e20486e54bb17f47e Author: Robert Bragg Date: Wed Feb 17 17:53:28 2010 +0000 cogl debug: hint that all debugging paths are G_UNLIKELY Most Cogl debugging code conditions are marked as G_UNLIKELY with the intention of having the CPU branch prediction always assume the path is disabled so having debugging support in release binaries has negligible overhead. This patch simply fixes a few cases where we weren't using G_UNLIKELY. cogl/cogl-journal.c | 9 +++++---- cogl/cogl.c | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) commit 210e618e6dc4dcbb302c23d507df889582a8b85e Author: Robert Bragg Date: Wed Feb 17 14:38:11 2010 +0000 cogl debug: Makes COGL_DEBUG=all|verbose|help more useful COGL_DEBUG=all wasn't previously useful as there are several options that change the behaviour of Cogl and all together wouldn't help anyone debug anything. This patch makes it so COGL_DEBUG=all|verbose now only enables options that don't change the behaviour of Cogl, i.e. they only affect the amount of noise we'll print to a terminal. In addition to that this patch also improves the output from COGL_DEBUG=help so we now print a table of options including one liner descriptions of what each option enables. cogl/cogl-debug.c | 121 +++++++++++++++++++++++++++++++---------- cogl/cogl-debug.h | 37 ++++++------- cogl/cogl-texture-2d-sliced.c | 2 +- 3 files changed, 111 insertions(+), 49 deletions(-) commit e8eb65319c1b01cf6cf61a0d7a796ca1d304791e Author: Emmanuele Bassi Date: Tue Feb 23 16:51:26 2010 +0000 cogl: Add deprecation annotation to CoglMaterial ref/unref The G_GNUC_DEPRECATED annotation was missing from the material ref and unref functions. cogl/cogl-material.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit d3a51df0fa23b5c5de9048e317c31df10b856d10 Author: Neil Roberts Date: Wed Feb 17 22:16:17 2010 +0000 cogl-vertex-buffer: Fix the malloc fallback for indices The size of the malloc'd buffer for indices when VBOs are not available was too small so memory corruption would result if it was used. http://bugzilla.o-hand.com/show_bug.cgi?id=1996 cogl/cogl-vertex-buffer.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit a4dfa70a0e218f5215fd26935fb3f76be33676e7 Author: Robert Bragg Date: Tue Feb 16 14:53:10 2010 +0000 cogl_texture_new_from_foreign: improve docs Improve the explanation of what the x_pot_waste and y_pot_waste arguments can be used for. cogl/cogl-texture.h | 15 +++++++++++---- 1 files changed, 11 insertions(+), 4 deletions(-) commit e96072c90ac0c800bf9bddaa1d09885f161d229b Author: Robert Bragg Date: Tue Feb 16 14:23:11 2010 +0000 cogl-texture: for foreign textures; always trust user geom We now never query the width and height of the given texture object from OpenGL. The problem is that the user may be creating a Cogl texture from a texture_from_pixmap object where glTexImage2D was never called and the texture_from_pixmap spec doesn't clarify that it's reliable to query the width from OpenGL. This should address: http://bugzilla.openedhand.com/show_bug.cgi?id=1502 Thanks to Johan Bilien for reporting cogl/cogl-texture-2d-sliced.c | 24 +++++++++--------------- 1 files changed, 9 insertions(+), 15 deletions(-) commit 1d54ecb8a1fa22b11d23498085ce6404e7baf391 Author: Neil Roberts Date: Wed Feb 17 15:58:32 2010 +0000 cogl-clip-stack: Round the coords when clipping to a window rect The size and position of the window rectangle for clipping in try_pushing_rect_as_window_rect is calculated by projecting the rectangle coordinates. Due to rounding errors, this can end up with slightly off numbers like 34.999999. These were then being cast directly to an integer so it could end up off by one. This uses a new macro called COGL_UTIL_NEARBYINT which is a replacement for the C99 nearbyint function. cogl/cogl-clip-stack.c | 6 +++++- cogl/cogl-util.h | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletions(-) commit 47f1b2ebc917f5a6d6e4122c165bd9155acd3fe9 Author: Neil Roberts Date: Tue Feb 16 12:01:18 2010 +0000 cogl-atlas-texture: Don't use the atlas if FBOs aren't supported If FBOs aren't supported then it will end up very slow to reorganize the atlas. Also currently the CoglTexture2D backend will refuse to create any textures anyway so the full atlas texture won't be created. cogl/cogl-atlas-texture.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) commit 0238be686a51a9a663460ebd2709a14d8791eebd Author: Neil Roberts Date: Tue Feb 16 11:58:47 2010 +0000 cogl-atlas-texture: Check for errors when creating the atlas texture cogl_texture_2d_new may fail in certain circumstances so cogl_atlas_texture_reserve_space should detect this and also fail. This will cause cogl_texture_new to fallback to a sliced texture. Thanks to Vladimir Ivakin for reporting this problem. cogl/cogl-atlas-texture.c | 19 ++++++++++++------- 1 files changed, 12 insertions(+), 7 deletions(-) commit 9e74b04fbd7f93109ed86bb1de0be7d5a8f09d86 Author: Damien Lespiau Date: Mon Feb 8 19:18:36 2010 +0000 docs: Add 2010 in COGL's Copyright notice While at it, fix the usage of in to let the stylesheet do the collation when having several years. doc/reference/cogl/cogl-docs.xml.in | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 3946a91e686cc5746289b25e52d43098e0997722 Author: Damien Lespiau Date: Fri Feb 12 17:24:15 2010 +0000 cogl-buffer: fix compilation for GL ES In the frenzy of the last 10mins before API freeze, I obviously forgot to update the OpenGL path for _cogl_buffer_hints_to_gl_enum(). This commit fixes this. cogl/cogl-buffer.c | 15 +++++---------- 1 files changed, 5 insertions(+), 10 deletions(-) commit 1499535fd0f07224a49d6bda118b58487ebdf92c Author: Neil Roberts Date: Fri Feb 12 15:33:56 2010 +0000 cogl-atlas-texture: Flush the journal before adding a new texture When the atlas is reorganised we could potentially be moving around textures that are already referenced in the journal. We therefore need to flush the journal otherwise they will be rendered with incorrect texture coordinates. We also need to flush the journal even if we are not reorganizing so that we can rely on the old texture contents remaining in the atlas after migrating a texture out. cogl/cogl-atlas-texture.c | 26 +++++++++++++++++++++++++- 1 files changed, 25 insertions(+), 1 deletions(-) commit 8119c184dabdb31d89cde3fdcdd856c915e9400f Author: Neil Roberts Date: Fri Feb 12 10:08:51 2010 +0000 cogl-sub-texture: Optimise taking a sub texture of a sub texture When creating a Cogl sub-texture, if the full texture is also a sub texture it will now just offset the x and y and reference the full texture instead. This avoids one level of indirection when rendering the texture which reduces the chances of getting rounding errors in the calculations. cogl/cogl-sub-texture-private.h | 17 +++++++++++++++-- cogl/cogl-sub-texture.c | 29 +++++++++++++++++++++++------ cogl/cogl-texture.h | 4 ++++ 3 files changed, 42 insertions(+), 8 deletions(-) commit 395518fb34d5ed1c5555e0c2ce099fdfde20a464 Author: Emmanuele Bassi Date: Fri Feb 12 15:52:07 2010 +0000 docs: Fixes for Cogl cogl/cogl-material.h | 1 + cogl/cogl-pixel-buffer.h | 2 +- doc/reference/cogl/Makefile.am | 3 ++- doc/reference/cogl/cogl-sections.txt | 8 ++++---- 4 files changed, 8 insertions(+), 6 deletions(-) commit 6e32d0afdab4dc80b49abb39e7285bca772113f5 Author: Emmanuele Bassi Date: Thu Feb 11 15:24:17 2010 +0000 analysis: CoglPangoRenderer Remove unused variables. pango/cogl-pango-render.c | 17 +++++++---------- 1 files changed, 7 insertions(+), 10 deletions(-) commit fbe9e80a07d131a2db663726da5acce814fa4e31 Author: Neil Roberts Date: Fri Feb 12 14:26:33 2010 +0000 cogl: Cache the value for GL_MAX_TEXTURE_UNITS The function _cogl_get_max_texture_units is called quite often while rendering and it returns a constant value so we might as well cache the result. Calling glGetInteger on Mesa can be expensive because it flushes a lot of state. cogl/cogl-context.c | 2 ++ cogl/cogl-context.h | 4 ++++ cogl/cogl.c | 12 +++++++++--- 3 files changed, 15 insertions(+), 3 deletions(-) commit e48b817b0a674613065d0a6e4b185b8a2bb07c5e Author: Robert Bragg Date: Thu Feb 11 16:12:26 2010 +0000 cogl: resolves some low hanging issues flagged by clang An initial pass over the Cogl source code using the Clang static analysis tool flagged a few low hanging issues such as un-used variables or redundant initializing of variables which this patch fixes. cogl/cogl-texture-2d-sliced.c | 9 ++------- cogl/cogl-texture.c | 8 ++++---- 2 files changed, 6 insertions(+), 11 deletions(-) commit 142128e10730fd6d1485b0756fac53895f313f49 Author: Robert Bragg Date: Thu Feb 11 15:33:01 2010 +0000 cogl_rectangle: avoid redundant copy of geometry All the cogl_rectangle* APIs normalize their input into into an array of _CoglMutiTexturedRect rectangles and pass these on to our work horse; _cogl_rectangles_with_multitexture_coords. The definition of _CoglMutiTexturedRect had 4 separate float members, x_1, y_1, x_2 and y_2 which meant for some common cases we were having to copy out from an array into these members. We are now able to simply point into the users array avoiding a copy which seems desirable when submiting lots of rectangles. cogl/cogl-journal-private.h | 5 +- cogl/cogl-journal.c | 31 ++++++---- cogl/cogl-primitives.c | 135 ++++++++++++++++++++++-------------------- 3 files changed, 91 insertions(+), 80 deletions(-) commit f93e50a2819426c6c921ea7da8d0b232e5ad8285 Author: Robert Bragg Date: Wed Feb 10 22:47:49 2010 +0000 cogl: explicitly mark cogl__ref/unref APIs as deprecated This uses the G_GNUC_DEPRECATED macros to mark the cogl_{texture,vertex_buffer,shader}_ref and unref APIs as deprecated. Since this flagged that cogl-pango-display-list.c and clutter-glx-texture-pixmap.c were still using deprecated _ref/_unref APIs they have now been changed to use the cogl_handle_ref/unref API instead. cogl/cogl-shader.h | 8 ++++++-- cogl/cogl-texture.h | 4 ++-- cogl/cogl-vertex-buffer.h | 4 ++-- pango/cogl-pango-display-list.c | 8 ++++---- 4 files changed, 14 insertions(+), 10 deletions(-) commit 7d9b733446438d301cf45de539097e236b4b1b1e Author: Robert Bragg Date: Wed Feb 10 22:30:37 2010 +0000 cogl: cleanly separate primitives + paths code The function prototypes for the primitives API were spread between cogl-path.h and cogl-texture.h and should have been in a cogl-primitives.h. As well as shuffling the prototypes around into more sensible places this commit splits the cogl-path API out from cogl-primitives.c into a cogl-path.c cogl/Makefile.am | 3 + cogl/cogl-internal.h | 28 ++ cogl/cogl-path.c | 1121 ++++++++++++++++++++++++++++++++++++++++++++++++ cogl/cogl-path.h | 35 +-- cogl/cogl-primitives.c | 1078 ---------------------------------------------- cogl/cogl-primitives.h | 188 +++++++-- cogl/cogl-texture.h | 133 ------ cogl/cogl.h | 1 + 8 files changed, 1317 insertions(+), 1270 deletions(-) commit ba4b00be42874e3a1af59efaf5426b20ead7519b Author: Robert Bragg Date: Wed Feb 10 18:18:30 2010 +0000 cogl: remove redundant _cogl_journal_flush prototype There was a redundant _cogl_journal_flush function prototype in cogl-primitives.h cogl/cogl-clip-stack.c | 1 + cogl/cogl-framebuffer.c | 1 + cogl/cogl-journal-private.h | 5 +++-- cogl/cogl-material.c | 1 + cogl/cogl-primitives.h | 3 --- cogl/cogl-texture-2d-sliced.c | 1 + cogl/cogl-texture-2d.c | 1 + cogl/cogl-vertex-buffer.c | 1 + cogl/driver/gl/cogl-program.c | 1 + 9 files changed, 10 insertions(+), 5 deletions(-) commit 0f5f4e8645d12eb6c5ff99c13503f2380740bb10 Author: Robert Bragg Date: Wed Feb 10 01:57:32 2010 +0000 cogl: improves header and coding style consistency We've had complaints that our Cogl code/headers are a bit "special" so this is a first pass at tidying things up by giving them some consistency. These changes are all consistent with how new code in Cogl is being written, but the style isn't consistently applied across all code yet. There are two parts to this patch; but since each one required a large amount of effort to maintain tidy indenting it made sense to combine the changes to reduce the time spent re indenting the same lines. The first change is to use a consistent style for declaring function prototypes in headers. Cogl headers now consistently use this style for prototypes: return_type cogl_function_name (CoglType arg0, CoglType arg1); Not everyone likes this style, but it seems that most of the currently active Cogl developers agree on it. The second change is to constrain the use of redundant glib data types in Cogl. Uses of gint, guint, gfloat, glong, gulong and gchar have all been replaced with int, unsigned int, float, long, unsigned long and char respectively. When talking about pixel data; use of guchar has been replaced with guint8, otherwise unsigned char can be used. The glib types that we continue to use for portability are gboolean, gint{8,16,32,64}, guint{8,16,32,64} and gsize. The general intention is that Cogl should look palatable to the widest range of C programmers including those outside the Gnome community so - especially for the public API - we want to minimize the number of foreign looking typedefs. cogl/cogl-atlas-texture.c | 52 +++--- cogl/cogl-atlas.c | 22 ++- cogl/cogl-atlas.h | 18 +- cogl/cogl-bitmap-fallback.c | 82 +++++----- cogl/cogl-bitmap-pixbuf.c | 60 +++--- cogl/cogl-bitmap-private.h | 30 ++-- cogl/cogl-bitmap.c | 34 ++-- cogl/cogl-bitmap.h | 15 +- cogl/cogl-blend-string.c | 12 +- cogl/cogl-blend-string.h | 4 +- cogl/cogl-buffer-private.h | 14 +- cogl/cogl-buffer.c | 8 +- cogl/cogl-buffer.h | 26 ++-- cogl/cogl-clip-stack.c | 16 +- cogl/cogl-clip-stack.h | 14 +- cogl/cogl-color.h | 75 +++++--- cogl/cogl-context.c | 2 +- cogl/cogl-context.h | 10 +- cogl/cogl-debug.c | 8 +- cogl/cogl-debug.h | 4 +- cogl/cogl-feature-private.c | 19 +- cogl/cogl-feature-private.h | 14 +- cogl/cogl-fixed.c | 24 ++-- cogl/cogl-fixed.h | 72 +++++--- cogl/cogl-handle.h | 2 +- cogl/cogl-internal.h | 32 ++-- cogl/cogl-journal.c | 26 ++-- cogl/cogl-material-private.h | 67 ++++--- cogl/cogl-material.c | 22 ++-- cogl/cogl-material.h | 175 +++++++++++------- cogl/cogl-matrix.h | 110 +++++++----- cogl/cogl-path.h | 138 ++++++++------ cogl/cogl-pixel-buffer-private.h | 9 +- cogl/cogl-pixel-buffer.c | 53 +++--- cogl/cogl-pixel-buffer.h | 46 +++--- cogl/cogl-primitives.c | 48 +++--- cogl/cogl-primitives.h | 13 +- cogl/cogl-shader.h | 96 ++++++---- cogl/cogl-sub-texture-private.h | 14 +- cogl/cogl-sub-texture.c | 70 ++++---- cogl/cogl-texture-2d-private.h | 4 +- cogl/cogl-texture-2d-sliced-private.h | 6 +- cogl/cogl-texture-2d-sliced.c | 163 +++++++++--------- cogl/cogl-texture-2d.c | 34 ++-- cogl/cogl-texture-private.h | 6 +- cogl/cogl-texture.c | 106 ++++++------ cogl/cogl-texture.h | 220 +++++++++++++---------- cogl/cogl-types.h | 15 +- cogl/cogl-util.c | 30 ++-- cogl/cogl-vertex-buffer-private.h | 2 +- cogl/cogl-vertex-buffer.c | 18 +- cogl/cogl-vertex-buffer.h | 6 +- cogl/cogl.c | 52 +++--- cogl/cogl.h | 310 +++++++++++++++++++------------- cogl/driver/gl/cogl-program.c | 18 +- cogl/driver/gl/cogl-shader.c | 2 +- cogl/driver/gl/cogl-texture-driver.c | 2 +- cogl/driver/gl/cogl.c | 8 +- cogl/driver/gles/cogl-gles2-wrapper.c | 6 +- cogl/driver/gles/cogl-gles2-wrapper.h | 12 +- cogl/driver/gles/cogl-program.c | 42 +++--- cogl/driver/gles/cogl-shader.c | 4 +- cogl/driver/gles/cogl-texture-driver.c | 4 +- doc/CODING_STYLE | 49 +++++ 64 files changed, 1491 insertions(+), 1184 deletions(-) commit 10fa7c7ce9a69b733e4652a51e101a98911d5bb8 Author: Robert Bragg Date: Fri Feb 5 16:32:19 2010 +0000 cogl: deprecates cogl_check_extension OpenGL is an implementation detail for Cogl so it's not appropriate to expose OpenGL extensions through the Cogl API. Note: Clutter is currently still using this API, because it is still doing raw GL calls in ClutterGLXTexturePixmap, so this introduces a couple of (legitimate) build warnings while compiling Clutter. cogl/cogl-feature-private.c | 4 ++-- cogl/cogl-internal.h | 1 + cogl/cogl.c | 32 ++++++++++++++++++++++++++++++++ cogl/cogl.h | 11 ++++++++++- cogl/driver/gl/cogl.c | 31 +++---------------------------- cogl/driver/gles/cogl.c | 25 ------------------------- 6 files changed, 48 insertions(+), 56 deletions(-) commit f74f4bdc2bcf885c53d8c07c9a25dac7d5ce9505 Author: Neil Roberts Date: Thu Feb 11 14:20:48 2010 +0000 cogl: Add a fallback for when the signbit macro is missing The signbit macro is defined in C99 so it should be available but some versions of GCC don't appear to define it by default. If it's not available we can use a hack to test the bit directly. cogl/cogl-sub-texture.c | 2 +- cogl/cogl-texture-2d.c | 2 +- cogl/cogl-util.h | 27 ++++++++++++++++++++++++++- 3 files changed, 28 insertions(+), 3 deletions(-) commit a0a40f07b35015a46b4dcd927da13c1639a27fd0 Author: Neil Roberts Date: Wed Feb 10 12:41:09 2010 +0000 cogl-material: Layers are not equal if the filters aren't equal A material layer can not be considered equal if it is using different texture filtering modes. This was causing problems where rectangles with different filters would end up batched together and then rendered with the wrong filter mode. cogl/cogl-material.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit 282abe91f79fc37ec5ed840e248f7bc563b1cfaa Author: Emmanuele Bassi Date: Tue Feb 9 17:07:08 2010 +0000 cogl: Move material_copy() out of the deprecated section We strongly suggest people should be using cogl_material_copy(), but it was hidden behind the deprecation guards. cogl/cogl-material.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 0145562cadf233492a5e37cee7bca7e1762f125d Author: Emmanuele Bassi Date: Tue Feb 9 16:57:14 2010 +0000 Fix some compiler warnings GCC complains that some variable might be used uninitialized. cogl/cogl-matrix-stack.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) commit d3948fab8c3d3e63e2b4da3ffa9100cca99031e4 Author: Neil Roberts Date: Tue Feb 9 16:30:28 2010 +0000 cogl-bitmap: Remove const from premult_alpha_last_four_pixels_sse2 The function modifies the pixels pointed by p in-place so the pointer can not be constant. The compiler was accepting this because the modification is done from inline assembler. cogl/cogl-bitmap-fallback.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 62fa1f9c2892df70477b7746a3a5f197d63dcbf7 Author: Emmanuele Bassi Date: Tue Feb 9 15:29:29 2010 +0000 docs: Clean up the unused symbols for Cogl Gtk-doc is reporting a lot of false positives in the unused text file, mostly because of new private files that have been added to Cogl but not to the gtk-doc ignore list for the Cogl API reference. Once the false positives have been removed we have a couple of really missing symbols that should be added to the cogl-sections.txt file. doc/reference/cogl/Makefile.am | 54 +++++++++++++++++++--------------- doc/reference/cogl/cogl-sections.txt | 7 ++++ 2 files changed, 37 insertions(+), 24 deletions(-) commit 82c6be52690e33359ab8fb1ea08b94afdcbc753d Author: Bastian Winkler Date: Tue Feb 9 15:19:03 2010 +0100 cogl-buffer: Use correct argument types in cogl_buffer_set_data_EXP offset and size arguments are gsize in cogl-buffer.h http://bugzilla.openedhand.com/show_bug.cgi?id=1980 Signed-off-by: Emmanuele Bassi cogl/cogl-buffer.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit ea0d0f12312d7c21a28e3c428a799fd09e895f72 Author: Emmanuele Bassi Date: Tue Feb 9 14:48:11 2010 +0000 docs: Move some Cogl defines in the private section The PixelFormat bit and mask #defines should not be used and are there mostly for convenience, so we can push them to the "private" sub-section of the API reference. This pushed Cogl's API reference coverage to 100%. doc/reference/cogl/cogl-sections.txt | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) commit 2674a1ead2a0c0ad1803acdfc7bf8e1ee188d60d Author: Emmanuele Bassi Date: Tue Feb 9 14:41:37 2010 +0000 docs: Fixes for Cogl API reference 98% symbol docs coverage. 335 symbols documented. 0 symbols incomplete. 8 not documented. Not bad, if I may say so. cogl/cogl-buffer.h | 12 +++++++-- cogl/cogl-color.h | 41 ++++++++++++++++++++++++++++++++++ cogl/cogl-fixed.h | 2 +- cogl/cogl-material-private.h | 2 +- cogl/cogl-matrix.h | 3 +- cogl/cogl-types.h | 23 ++++++++++++++++++- doc/reference/cogl/cogl-sections.txt | 16 +++---------- 7 files changed, 80 insertions(+), 19 deletions(-) commit 2938ae0475f7630a7be721c5f2d81feb34564182 Author: Neil Roberts Date: Tue Feb 9 12:21:10 2010 +0000 cogl-texture-2d: Use _cogl_texture_driver_gen to generate the GL tex _cogl_texture_driver_gen is needed to set the texture minification mode to Cogl's default of GL_LINEAR. There was also a line to set this in _cogl_texture_2d_new_with_size but it wasn't working because it was called *before* the texture was bound. If the texture was later rendered with the default material it then it would end up with GL's default mipmap filtering mode but without mipmaps so it would render white squares instead. cogl/cogl-texture-2d.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit f16fd0ddbb0fcf1285ba77cbcb23e57ab70d3df7 Author: Neil Roberts Date: Fri Dec 18 21:17:21 2009 +0000 cogl: Use SSE2 when possible for premultiplying This adds a fast path for premultiplying an RGBA image using SSE2 instructions. SSE registers are 128-bit and we need at least 16-bits per component for the intermediate result of the multiplication so we can do two pixels in parallel with one register. The function interleaves 2 SSE registers to multiply 4 pixels in one function call with the hope that this will pipeline better. http://bugzilla.openedhand.com/show_bug.cgi?id=1939 Signed-off-by: Emmanuele Bassi cogl/cogl-bitmap-fallback.c | 104 ++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 103 insertions(+), 1 deletions(-) commit 2ecb6f7b20a501818f1bc6fea3406b9fce557a27 Author: Halton Huo Date: Tue Feb 9 10:21:37 2010 +0000 Remove return from void functions This patch fixes compilation on suncc. http://bugzilla.openedhand.com/show_bug.cgi?id=1978 Signed-off-by: Emmanuele Bassi cogl/cogl-buffer.c | 2 +- cogl/cogl-sub-texture.c | 2 +- cogl/cogl-texture.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit 23717452bfdd9ae2f4328f3fefb30cd0eafea8c1 Author: Damien Lespiau Date: Mon Feb 8 17:11:43 2010 +0000 cogl-buffer: Use TEXTURE as the only value for CoglBufferUsageHint We should try to use more explicit defines than GL for our hints. For now we only support using a CoglBuffer to generate textures. cogl/cogl-buffer.c | 38 +++++++++----------------------------- cogl/cogl-buffer.h | 12 +++--------- cogl/cogl-pixel-buffer.c | 2 +- 3 files changed, 13 insertions(+), 39 deletions(-) commit 273fd23742876183544be9fa83b1f3e369e63a1c Author: Damien Lespiau Date: Tue Feb 2 16:44:16 2010 +0000 cogl-buffer: make sure the code compiles on GL ES OpenGL ES has no PBO extension, so we fallback to using a malloc'ed buffer. Make sure the OpenGL-only defines don't leak into the OpenGL ES compilation. cogl/cogl-buffer.c | 28 ++++++++++++++++++++++++++++ cogl/cogl-pixel-buffer.c | 7 +++++++ cogl/cogl-texture.c | 5 ++++- 3 files changed, 39 insertions(+), 1 deletions(-) commit ca80e8802b3a1ea52e62294de841a236065c0db8 Author: Damien Lespiau Date: Tue Feb 2 12:59:51 2010 +0000 cogl-pixel-buffer: Add a fallback path First, let's add a new public feature called, surprisingly, COGL_FEATURE_PBOS to check the availability of PBOs and provide a fallback path when running on older GL implementations or on OpenGL ES In case the underlying OpenGL implementation does not provide PBOs, we need a fallback path (a malloc'ed buffer). The CoglPixelBufer constructors will instanciate a subclass of CoglBuffer that handles map/unmap and set_data() with a malloc'ed buffer. The public feature is useful to check before using set_data() on a buffer as it will mean doing a memcpy() when not supporting PBOs (in that case, it's better to create the texture directly instead of using a CoglBuffer). cogl/cogl-pixel-buffer.c | 56 +++++++++++++++++++++++++++++-- cogl/cogl-texture.c | 38 +++++++++++++++------ cogl/cogl-types.h | 4 ++- cogl/driver/gl/cogl-feature-functions.h | 5 +++ 4 files changed, 88 insertions(+), 15 deletions(-) commit cf960cfb3d8f0be32559eab35727f285e686c234 Author: Damien Lespiau Date: Fri Jan 22 15:07:27 2010 +0000 cogl-texture: Add a new constructor to turn CoglBuffers into textures The only goal of using COGL buffers is to use them to create textures. cogl_texture_new_from_buffer() is the new symbol to create textures out of buffers. cogl/cogl-texture.c | 55 +++++++++++++++++++++++++++++++ cogl/cogl-texture.h | 60 ++++++++++++++++++++++++++++++++++ doc/reference/cogl/cogl-sections.txt | 3 ++ 3 files changed, 118 insertions(+), 0 deletions(-) commit 47cc5a4e4344f94e5a32b68e18a44e33f1cfb332 Author: Damien Lespiau Date: Sun Jan 10 18:04:29 2010 +0000 cogl-pixel-buffer: add a pixel buffer object class This subclass of CoglBuffer aims at wrapping PBOs or other system surfaces like DRM buffer objects. Two constructors are available: cogl_pixel_buffer_new() with a size when you only care about the size of the buffer (such a buffer can be used to store several texture data such as the three planes of a I420 frame). cogl_pixel_buffer_new_full() is more a 1:1 mapping between the data and an underlying surface, with the possibility of having access to a low level memory buffer that may have a stride. cogl/Makefile.am | 3 + cogl/cogl-pixel-buffer-private.h | 72 ++++++++ cogl/cogl-pixel-buffer.c | 317 ++++++++++++++++++++++++++++++++++ cogl/cogl-pixel-buffer.h | 165 ++++++++++++++++++ cogl/cogl.h | 1 + doc/reference/cogl/cogl-sections.txt | 6 + 6 files changed, 564 insertions(+), 0 deletions(-) commit 40b73a8c0c295400a0e4fd8402ec1a170db9a66a Author: Damien Lespiau Date: Sun Jan 10 17:28:24 2010 +0000 cogl-buffer: add an abstract class around openGL's buffer objects Buffer objects are cool! This abstracts the buffer API first introduced by GL_ARB_vertex_buffer_object and then extended to other objects. The coglBuffer abstract class is intended to be the base class of all the buffer objects, letting the user map() buffers. If the underlying implementation does not support buffer objects (or only support VBO but not FBO for instance), fallback paths should be provided. cogl/Makefile.am | 3 + cogl/cogl-buffer-private.h | 102 ++++++++++++ cogl/cogl-buffer.c | 282 +++++++++++++++++++++++++++++++++ cogl/cogl-buffer.h | 287 ++++++++++++++++++++++++++++++++++ cogl/cogl-context.c | 2 + cogl/cogl-context.h | 5 + cogl/cogl.h | 4 + doc/reference/cogl/cogl-docs.xml.in | 21 +++ doc/reference/cogl/cogl-sections.txt | 17 ++ 9 files changed, 723 insertions(+), 0 deletions(-) commit dbef77cd8bfad02a5f2cf4b9c7343e42e584de6a Author: Damien Lespiau Date: Mon Jan 25 11:21:05 2010 +0000 cogl: new textures sould have GL_TEXTURE_MIN_FILTER set to GL_LINEAR The only way the user has to set the mipmap filters is through the material/layer API. This API defaults to GL_LINEAR/GL_LINEAR for the max and min filters. With the main use case of cogl being 2D interfaces, it makes sense do default to GL_LINEAR for the min filter. When creating new textures, we did not set any filter on them, using OpenGL defaults': GL_NEAREST_MIPMAP_LINEAR for the min filter and GL_LINEAR for the max filter. This will make the driver allocate memory for the mipmap tree, memory that will not be used in the nominal case (as the material API defaults to GL_LINEAR). This patch tries to ensure that the min filter is set to GL_LINEAR before any glTexImage*() call is done on the texture by setting the filter when generating new OpenGL handles. cogl/cogl-texture-2d-sliced.c | 9 ++++----- cogl/cogl-texture-2d.c | 9 +++++---- cogl/cogl-texture-driver.h | 9 +++++++++ cogl/driver/gl/cogl-texture-driver.c | 27 +++++++++++++++++++++++++++ cogl/driver/gles/cogl-texture-driver.c | 27 +++++++++++++++++++++++++++ 5 files changed, 72 insertions(+), 9 deletions(-) commit 0adc2c458d5fadbff99d6341093043b5863219a1 Author: Damien Lespiau Date: Mon Jan 11 00:15:25 2010 +0000 cogl: Introduce the GE_RET() debug macro Some GL functions have a return value that the GE() macro is not able to handle. Let's define a new Ge_RET() macro which will be able to handle functions such as glMapBuffer(). While at it, removed the unused variadic dots to the GE() macro. cogl/cogl-internal.h | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 deletions(-) commit 5b4957a81046b75348f98060a78ef837f67b17fe Merge: b31f2dd b39d1b7 Author: Emmanuele Bassi Date: Mon Feb 8 16:53:11 2010 +0000 Merge branch 'animator-parser' * animator-parser: docs: Describe the Animation definition syntax animator: Provide a ClutterScript parser animator: Allow retrieving type property type from a key script: Use a node when resolving an animation mode commit b31f2dd4a2d6df62f1049cd8c57dea627193f0d4 Author: Robert Bragg Date: Thu Jan 14 18:11:57 2010 +0000 cogl path: make sure marking the clip state dirty takes affect When we trashed the contents of the stencil buffer during _cogl_path_fill_nodes we marked the clip stack state as dirty and expected the clip stack code would clean up our glStencilFunc state. The problem is that we only try and update the clip state during _cogl_journal_init (when we flush the framebuffer state) which is only called when the journal first gets something logged in it. To make sure the stencil state is cleaned up we now also flush the journal so _cogl_journal_init will be called for the next logged rectangle. cogl/cogl-primitives.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) commit 286ca56d4f0c3fa6929876235f5d54f92eea2a26 Author: Emmanuele Bassi Date: Mon Feb 8 10:34:22 2010 +0000 Merge remote branch 'origin/cwiiis-stage-resize' * origin/cwiiis-stage-resize: [stage-x11] Set the default size differently [stage] Set default size correctly Revert "[x11] Don't set actor size on ConfigureNotify" [x11] Don't set actor size on ConfigureNotify [stage] Now that get_geometry works, use it [stage-x11] make get_geometry always get geometry [stage] Get the current size correctly [stage] Set minimum width/height to 1x1 [stage] Add set/get_minumum_size commit b39d1b788a793a4ea0d9b5e9686fac91039be7a3 Merge: a73ac7b b9a9bf6 Author: Neil Roberts Date: Sat Feb 6 00:20:07 2010 +0000 Merge branch 'more-texture-backends' This adds three new texture backends. - CoglTexture2D: This is a trimmed down version of CoglTexture2DSliced which only supports a single texture and only works with the GL_TEXTURE_2D target. The code is a lot simpler so it has a less overheads than dealing with slices. Cogl will use this wherever possible. - CoglSubTexture: This is used to get a CoglHandle to represent a subregion of another texture. The texture can be used as if it was a standalone texture but it does not need to copy the resources. - CoglAtlasTexture: This collects RGB and RGBA textures into a single GL texture with the aim of reducing texture state changes and increasing batching. The backend will try to manage the atlas and may move the textures around to close gaps in the texture. By default all textures will be placed in the atlas. commit b9a9bf60b7b6b0d80f0b97a43527d7d6fd83b9f8 Author: Neil Roberts Date: Sat Feb 6 00:12:10 2010 +0000 cogl-bitmap: Update the format after (un)premultiplying The pixel format of the bitmap needs to have its premult flag cleared or set after the premult conversion otherwise it may get converted again. cogl/cogl-bitmap-fallback.c | 4 ++++ cogl/cogl-texture.c | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) commit 45215cb42640dc094f002dd7d84bcc2c9af22cea Author: Neil Roberts Date: Fri Feb 5 17:03:04 2010 +0000 cogl-atlas-texture: Fix a cut and paste error when getting the height There was a typo in getting the height of the full texture to check whether the sub region fits so that it was using the width instead. This was causing crashes when debugging is enabled for some apps. cogl/cogl-sub-texture.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit a73ac7bf574efa3136d6a14a73c7d2d054474eb1 Author: Damien Lespiau Date: Thu Feb 4 21:10:02 2010 +0000 docs: Use % for defines not # Some links to defines in the gtk-doc annotations were using '#' instead of '%'. cogl/cogl-fixed.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 8ef5e82dfa02bc45c145970337dffc495542c1da Author: Damien Lespiau Date: Wed Jan 27 16:03:28 2010 +0000 docs: fix new line in the cogl xml top level document A comma in the FSF address is wrong. Supreme Offence. doc/reference/cogl/cogl-docs.xml.in | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit 264f0f0f05746e8e92100022fdd09934882fad77 Author: Neil Roberts Date: Wed Feb 3 23:08:30 2010 +0000 cogl-texture: Avoid copying the bitmap when premultiplying from a file In cogl_texture_new_from_file we create and own a temporary bitmap. There's no need to copy this data if we need to do a premult conversion so instead it just does conversion before passing it on to cogl_texture_new_from_bitmap. cogl/cogl-texture.c | 23 ++++++++++++++++++----- 1 files changed, 18 insertions(+), 5 deletions(-) commit e83e0c3e5b78e6e220f27c3648d84a0f92eb2d23 Author: Neil Roberts Date: Wed Feb 3 22:54:44 2010 +0000 cogl-texture: Split out _cogl_texture_prepare_for_upload The Cogl atlas code was using _cogl_texture_prepare_for_upload with a NULL pointer for the dst_bmp to determine the internal format of the texture without converting the bitmap. It needs to do this to decide whether the texture will go in the atlas before wasting time on the conversion. This use of the function is a little confusing so that part of it has been split out into a new function called _cogl_texture_determine_internal_format. The code to decide whether a premult conversion is needed has also been split out. cogl/cogl-atlas-texture.c | 11 +----- cogl/cogl-texture-private.h | 7 ++++ cogl/cogl-texture.c | 81 +++++++++++++++++++++++++----------------- 3 files changed, 57 insertions(+), 42 deletions(-) commit ef9781d7dadb7431c5420764d9a33b9bddcf1a5a Author: Neil Roberts Date: Wed Feb 3 19:54:12 2010 +0000 cogl-atlas: Make the cogl_atlas_* API internal This just adds an underscore to every entry point for the CoglAtlas API so that it's not exported. cogl/cogl-atlas-texture.c | 89 ++++++++++++++-------------- cogl/cogl-atlas.c | 140 ++++++++++++++++++++++---------------------- cogl/cogl-atlas.h | 32 +++++----- cogl/cogl-context.c | 2 +- 4 files changed, 132 insertions(+), 131 deletions(-) commit 76f4696e437d69a96ec8bddedb109f05dc1bb19e Author: Emmanuele Bassi Date: Thu Dec 3 17:13:44 2009 +0000 Delay default stage creation The default stage creation should be delayed as much as possible, ideally at the end of the init() process. cogl/cogl-journal.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit e337bd2370d181f9bd37c5006dbf2bd9d5396ddb Author: Emmanuele Bassi Date: Thu Dec 3 17:35:19 2009 +0000 cogl-debug: Remove redundant newlines The debugging notes wrapping g_debug() already have an implicit newline at the end of the passed message. cogl/cogl-handle.h | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 44431da16430ba0f69f0b4c78f3d4fe148e2eaed Author: Neil Roberts Date: Wed Feb 3 14:31:12 2010 +0000 cogl-vertex-buffer: Refix disabling texture coord arrays Commit 92a375ab4 changed the initial value of max_texcoord_attrib_unit to -1 so that it could disable the texture coord array for the first texture unit when there are no texture coords used in the vbo. However max_texcoord_attrib_unit was an unsigned value so this actually became G_MAXUINT. The disabling loop at the bottom still worked because G_MAXUINT+1==0 but the check for whether any texture unit is greater than max_texcoord_attrib_unit was failing so it would always end up disabling all texture units. This is now fixed by changing max_texcoord_attrib_unit to be signed. cogl/cogl-vertex-buffer.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit efcbd20320712de9785d8361f5483cecc96cf0df Merge: e445504 f7bd5af Author: Neil Roberts Date: Mon Feb 1 13:37:19 2010 +0000 Merge remote branch 'master' into texture-debugging Conflicts: clutter/cogl/cogl/cogl-context.h commit e4455041c8439ce9f5b5e1f9ee9c7e0a4927a4ec Author: Neil Roberts Date: Mon Feb 1 13:25:19 2010 +0000 cogl-material: Compare GL texture numbers for material layer textures When deciding if a material layer is equal it now compares the GL target and texture number if the textures are not sliced. This is needed to get batching across atlased textures. cogl/cogl-material.c | 25 ++++++++++++++++++++++++- 1 files changed, 24 insertions(+), 1 deletions(-) commit e20c98e54899497fce26f60e10a8787e1ed6fec4 Author: Neil Roberts Date: Mon Feb 1 12:11:58 2010 +0000 cogl: Let GL do the format conversion when uploading texture data Cogl accepts a pixel format for both the data in memory and the internal format to be used for the texture. If they do not match then it would convert them using the CoglBitmap functions before uploading the data. However, GL also lets you specify both formats so it makes more sense to let GL do the conversion. The driver may need the texture in a specific format so it may end up being converted anyway. The cogl_texture_upload_data functions have been removed and replaced with a single function to prepare the bitmap. This will only do the premultiplication conversion because that is the only part that GL can't do directly. cogl/cogl-atlas-texture.c | 111 ++++++++++----------- cogl/cogl-texture-2d-sliced.c | 220 ++++++++++++++++++++++------------------ cogl/cogl-texture-2d.c | 92 ++++++++---------- cogl/cogl-texture-private.h | 44 +++------ cogl/cogl-texture.c | 134 +++++++++++-------------- 5 files changed, 289 insertions(+), 312 deletions(-) commit a6f061e41fa97267c35e15869ba91d21de2ad1f2 Author: Neil Roberts Date: Fri Jan 29 15:15:08 2010 +0000 cogl: Do the premult conversion in-place rather than copying to a new buffer The premult part of _cogl_convert_premult has now been split out as _cogl_convert_premult_status. _cogl_convert_premult has been renamed to _cogl_convert_format to make it less confusing. The premult conversion is now done in-place instead of copying the buffer. Previously it was copying the buffer once for the format conversion and then copying it again for the premult conversion. The premult conversion never changes the size of the buffer so it's quite easy to do in place. We can also use the separated out function independently. cogl/cogl-atlas-texture.c | 6 +- cogl/cogl-bitmap-fallback.c | 142 ++++++++++++++++------------------------- cogl/cogl-bitmap-pixbuf.c | 6 +- cogl/cogl-bitmap-private.h | 22 +++--- cogl/cogl-bitmap.c | 102 +++++++++++------------------ cogl/cogl-texture-2d-sliced.c | 12 ++-- cogl/cogl-texture-2d.c | 12 ++-- cogl/cogl-texture.c | 6 +- 8 files changed, 123 insertions(+), 185 deletions(-) commit 406c203b422bd492235ffa91816671f4fd26e44c Author: Neil Roberts Date: Fri Jan 29 12:19:42 2010 +0000 cogl-atlas-texture: Use a single atlas for both RGB and RGBA textures The internal format of the atlas texture is still set to the appropriate format so Cogl will disable blending for textures that are intended to be RGB. This should end up ignoring the alpha channel from the texture in the atlas. This makes the code slightly easier to maintain and should also improve the chances of batching. cogl/cogl-atlas-texture.c | 134 ++++++++++++++++---------------------------- cogl/cogl-context.c | 18 ++---- cogl/cogl-context.h | 8 +-- 3 files changed, 57 insertions(+), 103 deletions(-) commit f7bd5af4a6e1b1f9145df58fe7ca8cf6a8d65a37 Merge: 4fcbbfe 18b96c8 Author: Emmanuele Bassi Date: Mon Feb 1 11:26:56 2010 +0000 Merge branch 'device-manager' * device-manager: (37 commits) x11: Re-enable XI1 extension keyboards x11: Always handle core device events before XI events docs: Documentation fixes for DeviceManager device-manager: Fix the signals definition docs: Add sections for InputDevice and DeviceManager docs: Add clutter_input_device_get_device_name() tests: Print out the device details on motion Always register core devices device: Remove unused is_default member win32: Experimental implementation of device support tests: Print the device name, as well as its Id x11: Fill out the :name property of the InputDevices device: Add the :name property to InputDevice x11: Store core devices on the X11 Backend singleton device: Unset the cursor actor when leaving the stage device: Add pointer actor getter x11: Discard the LeaveNotify for off-stage ButtonRelease device: Do not overwrite the stage for an InputDevice event: Off-stage button releases have a click count of 1 event: Scroll events do not have click count ... commit 4fcbbfeedcb1641d283743acb712b567a757efce Author: Emmanuele Bassi Date: Wed Jan 27 21:26:26 2010 +0000 Whitespace fixes in cogl-util cogl/cogl-util.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 47df6724b2893936033777fd2eec1cd0b8c7499c Author: Neil Roberts Date: Fri Jan 22 18:14:57 2010 +0000 cogl: Use the colours of COGL_DEBUG=rectangles to debug batching Instead of assigning a new colour to each quad of a batch, the rectangle debugging code now assigns a new colour to each batch so that it can be used to visually see what is being batched. The colour is stored in a global variable that is reset during cogl_clear. This improves the chances that the same colour will be used for a batch in the next frames to avoid flickering. cogl/cogl-context.h | 6 +++++ cogl/cogl-journal.c | 54 ++++++++++++++++++++++++++++++++++---------------- cogl/cogl.c | 11 ++++++++++ 3 files changed, 54 insertions(+), 17 deletions(-) commit 1718b1d42ef167779e7cefa18e01023b64e57cf9 Author: Neil Roberts Date: Tue Jan 26 13:46:27 2010 +0000 cogl-vertex-buffer: Fix disabling the texture arrays from previous prim When setting up the state for the vertex buffer, enable_state_for_drawing_buffer tries to keep track of the highest numbered texture unit in use. It then disables any texture arrays for units that were previously enabled if they are greater than that number. However if there is no texturing in the VBO then the max used unit would be left at 0 which it would later think meant unit 0 is still in use so it wouldn't disable it. To fix this it now initialises the max used unit to -1 which it should interpret as ‘no units are in use’ so it will later disable the arrays for all units. Thanks to Jon Mayo for reporting the bug. http://bugzilla.openedhand.com/show_bug.cgi?id=1957 cogl/cogl-vertex-buffer.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 548ed1cdf241ac0d324e2b289964f371f859b408 Author: Neil Roberts Date: Wed Jan 27 12:06:22 2010 +0000 docs: Add some notes about the CoglPixelFormat enums The pixel format enums didn't explain what order in memory the components should be so it was difficult to use them. cogl/cogl-types.h | 22 +++++++++++++++++++--- 1 files changed, 19 insertions(+), 3 deletions(-) commit 9d45e9641c57a890474fa76178d3eba316aa445a Author: Damien Lespiau Date: Tue Jan 26 18:47:25 2010 +0000 cogl: Fix checks of the number of available texture units We were checking the number of texture units against the GL enum that is used in glGetInteger() to query that number. Let's abstract this in a little function. Took the opportunity to dig a bit on the usage of GL limits for the number of texture (image) units and document our use of them. We'll need something finer grained if we want to fully exploit texture image units with a programmable pipeline. cogl/cogl-internal.h | 2 ++ cogl/cogl-material.c | 10 ++-------- cogl/cogl.c | 30 ++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 8 deletions(-) commit 84a438be55b13c6411f0f854987356235d7db91e Author: Damien Lespiau Date: Sun Nov 15 20:17:47 2009 +0000 cogl: Fix gl equivalent of blend string An example of what could be the equivalent of "RBG = REPLACE(TEXTURE) A = MODULATE(PREVIOUS,TEXTURE)" using the ARB_texture_env_combine extension was given, but it seems that a few typo were left: * remove a spurius GL_COMBINE_ALPHA * use the _ALPHA variant of SRCN and OPERANDN when setting up the alpha combiner doc/reference/cogl/blend-strings.xml | 9 ++++----- 1 files changed, 4 insertions(+), 5 deletions(-) commit 3069ad640926e8f70e3a406acce518282b58b345 Author: Damien Lespiau Date: Sun Nov 15 19:54:17 2009 +0000 cogl: Create CoglTextureUnit with its associated unit number The index field of CoglTextureUnit was never set, leading to the creation of units with index set to 0. When trying to retrieve a texture unit by its index (!= 0) with _cogl_get_texture_unit(), a new one was created as it could not find it back in the list of textures units: ctx->texture_units. http://bugzilla.openedhand.com/show_bug.cgi?id=1958 cogl/cogl.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) commit 67fc6ead78645b112485e3e5854113e1c9dd0074 Author: Neil Roberts Date: Thu Jan 21 15:34:19 2010 +0000 cogl-atlas-texture: Add a debug option to disable the atlas If the user specifies the 'disable-atlas' debug option then no texture will be put in the atlas. cogl/cogl-atlas-texture.c | 5 +++++ cogl/cogl-debug.c | 3 ++- cogl/cogl-debug.h | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) commit 41a915ec002342d881f0bdbc6ecb99bc73537587 Author: Neil Roberts Date: Tue Jan 19 17:06:28 2010 +0000 cogl-atlas-texture: Don't create atlas textures with the premult bit Previously the atlas textures were being created with whatever format the first sub texture is in. Only three formats are supported so this only matters if the first texture is a premultiplied alpha texture. Instead it now masks out the premultiplied bit so that the textures are always either RGB_888 or RGBA_8888. cogl/cogl-atlas-texture.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit a78246b4032f362dc98fbd11e86a8fe350669693 Author: Neil Roberts Date: Mon Jan 18 10:53:00 2010 +0000 cogl-atlas-texture: Fix premultiplied texture formats When uploading texture data it was just calling cogl_texture_set_data on the large texture. This would attempt to convert the data to the format of the large texture. All of the textures with alpha channels are stored together regardless of whether they are premultiplied so this was causing premultiplied textures to be unpremultiplied again. It now just uploads the data ignoring the premult bit of the format so that it only gets converted once. cogl/cogl-atlas-texture.c | 232 ++++++++++++++++++++++++++++++-------------- 1 files changed, 158 insertions(+), 74 deletions(-) commit 12b45aaa3067ccb1bcf6785fc59bfd43b0164120 Author: Neil Roberts Date: Thu Jan 14 17:57:43 2010 +0000 cogl-primitives: Ensure the mipmaps for a layer before logging quads With the atlas texture backend ensuring the mipmaps can make it become a completely different texture which will have different texture coordinates or may even be sliced. Therefore we need to ensure the mipmaps before deciding which quads to log in the journal. This adds a new private function to cogl-material which ensures the mipmaps if needed. cogl/cogl-material-private.h | 6 ++++++ cogl/cogl-material.c | 19 +++++++++++++++---- cogl/cogl-primitives.c | 6 ++++++ 3 files changed, 27 insertions(+), 4 deletions(-) commit ae7825275e0b67a2cdab3d3208e16b2b3c11498c Author: Neil Roberts Date: Mon Jan 18 09:22:04 2010 +0000 cogl: Make CoglSubTexture only work for quad rendering The sub texture backend doesn't work well as a completely general texture backend because for example when rendering with cogl_polygon it needs to be able to tranform arbitrary texture coordinates without reference to the other coordintes. This can't be done when the texture coordinates are a multiple of one because sometimes the coordinate should represent the left or top edge and sometimes it should represent the bottom or top edge. For example if the s coordinates are 0 and 1 then 1 represents the right edge but if they are 1 and 2 then 1 represents the left edge. Instead the sub-textures are now documented not to support coordinates outside the range [0,1]. The coordinates for the sub-region are now represented as integers as this helps avoid rounding issues. The region can no longer be a super-region of the texture as this simplifies the code quite a lot. There are two new texture virtual functions: transform_quad_coords_to_gl - This transforms two pairs of coordinates representing a quad. It will return FALSE if the coordinates can not be transformed. The sub texture backend uses this to detect coordinates that require repeating which causes cogl-primitives to use manual repeating. ensure_non_quad_rendering - This is used in cogl_polygon and cogl_vertex_buffer to inform the texture backend that transform_quad_to_gl is going to be used. The atlas backend migrates the texture out of the atlas when it hits this. cogl/cogl-atlas-texture.c | 57 ++++- cogl/cogl-primitives.c | 21 +- cogl/cogl-sub-texture-private.h | 15 +- cogl/cogl-sub-texture.c | 498 +++++++++++++-------------------------- cogl/cogl-texture-2d-sliced.c | 21 ++ cogl/cogl-texture-2d.c | 17 ++ cogl/cogl-texture-private.h | 10 + cogl/cogl-texture.c | 33 +++- cogl/cogl-texture.h | 22 +- cogl/cogl-vertex-buffer.c | 5 + 10 files changed, 325 insertions(+), 374 deletions(-) commit 963afa88c51ba69820e570560fffc5c1650d16a6 Author: Neil Roberts Date: Mon Jan 11 16:23:38 2010 +0000 cogl-texture: Fix manual repeating for negative coordinates When calculating the next integer position for negative coordinates it would not increment if the position is already a multiple of one so we need to manually add one. cogl/cogl-texture.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) commit f1c289378e7f557ad5227417c22d7c0ce4fcecf2 Author: Neil Roberts Date: Mon Jan 11 16:21:56 2010 +0000 cogl-texture-2d: Fix the coordinate wrapping for negative coordinates The formula to wrap the coordinates to the [0,1] range was broken when the coordinates were negative. cogl/cogl-texture-2d.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit f5d809f1e83f65651c65566db87ee6a3876ac79e Merge: 568b6fb 18b96c8 Author: Neil Roberts Date: Fri Jan 15 12:15:46 2010 +0000 Merge branch 'master' into more-texture-backends commit 18b96c84bf188e211cb3c21be2603c56f279332e Author: Neil Roberts Date: Tue Jan 12 21:44:40 2010 +0000 cogl-framebuffer: Return gboolean from try_creating_fbo When try_creating_fbo fails it returns 0 to report the error and if it succeeds it returns ‘flags’. However cogl_offscreen_new_to_texture also passes in 0 for the flags as the last fallback to create the fbo with nothing but the color buffer. In that case it will return 0 regardless of whether it succeeded so the last fallback will always be considered a failure. To fix this it now just returns a gboolean to indicate whether it succeeded and the flags used for each attempt is assigned when passing the argument rather than from the return value of the function. Also if the only configuration that succeeded was with flags==0 then it would always try all combinations because last_working_flags would also be zero. To avoid this it now uses a separate gboolean to mark whether we found a successful set of flags. http://bugzilla.openedhand.com/show_bug.cgi?id=1873 cogl/cogl-framebuffer.c | 56 +++++++++++++++++++++++----------------------- 1 files changed, 28 insertions(+), 28 deletions(-) commit deecf83c4a120b8db311566154af2a37c8613111 Author: Emmanuele Bassi Date: Wed Jan 13 15:40:36 2010 +0000 build: Clean up COGL build flags cogl/Makefile.am | 53 ++++++++++++++++++++++++++--------------------------- 1 files changed, 26 insertions(+), 27 deletions(-) commit d1c56ae9a718cddb7c985b046709ff1e59a1b35b Author: Neil Roberts Date: Tue Jan 12 14:49:55 2010 +0000 cogl-framebuffer: Add some missing GL defines Since 755cce33a7 the framebuffer code is using the GL enums GL_DEPTH_ATTACHMENT and GL_DEPTH_COMPONENT16. These aren't available directly under GLES except with the OES suffix so we need to define them manually as we do with the other framebuffer constants. cogl/cogl-framebuffer.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit dfc3dd9c439b33ca655b00223ec387c3316e9371 Author: Neil Roberts Date: Tue Jan 12 14:43:36 2010 +0000 cogl: Remove the CGL_* defines These macros used to define Cogl wrappers for the GLenum values. There are now Cogl enums everywhere in the API where these were required so we shouldn't need them anymore. They were in the public headers but as they are not neccessary and were not in the API docs for Clutter 1.0 it should be safe to remove them. cogl/cogl-material.c | 10 +- cogl/cogl-primitives.c | 2 +- cogl/cogl-shader.h | 2 +- cogl/cogl-texture.h | 7 +- cogl/driver/gl/cogl-defines.h.in | 655 --------------------------------- cogl/driver/gl/cogl-texture-driver.c | 2 +- cogl/driver/gles/cogl-defines.h.in | 597 ------------------------------ cogl/driver/gles/cogl-gles2-wrapper.c | 4 +- cogl/driver/gles/cogl-gles2-wrapper.h | 65 ++-- 9 files changed, 51 insertions(+), 1293 deletions(-) commit e2fcb62990c7f72c9ffcff5b39b2794352eaa610 Author: Robert Bragg Date: Tue Jan 12 11:02:09 2010 +0000 journal: Fixes logging of multiple sets of texture coordinates If a user supplied multiple groups of texture coordinates with cogl_rectangle_with_multitexture_coords() then we would repeatedly log only the first group in the journal. This fixes that bug and adds a conformance test to verify the fix. Thanks to Gord Allott for reporting this bug. cogl/cogl-journal.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 9690913fefdad782c74efa5c546ece0d873c05e4 Author: Robert Bragg Date: Mon Nov 30 20:04:41 2009 +0000 cogl: Support multiple fallbacks in cogl_offscreen_new_to_texture() The Intel drivers in Mesa 7.6 (and possibly earlier versions) don't support creating FBOs with a stencil buffer but without a depth buffer. This reworks framebuffer allocation so that we try a number of fallback options before failing. The options we try in order are: - the same options that were sucessful last time if available - combined depth and stencil - separate depth and stencil - just stencil, no depth - just depth, no stencil - neither depth or stencil cogl/cogl-framebuffer-private.h | 2 +- cogl/cogl-framebuffer.c | 238 +++++++++++++++++++++++++-------------- 2 files changed, 156 insertions(+), 84 deletions(-) commit 05ce533fc8b865ed45f60abdf50625003b841576 Author: Robert Bragg Date: Wed Nov 25 14:26:32 2009 +0000 framebuffers: cogl_offscreen_new_to_texture should take a ref on the texture We weren't taking a reference on the texture to be used as the color buffer for offscreen rendering, so it was possible to free the texture leaving the framebuffer in an inconsistent state. cogl/cogl-framebuffer-private.h | 1 + cogl/cogl-framebuffer.c | 3 +++ 2 files changed, 4 insertions(+), 0 deletions(-) commit fbad0a75b684cebbff874ba689810c2ff763b6e8 Author: Robert Bragg Date: Fri Jul 3 16:22:35 2009 +0100 profiling: Adds initial UProf accounting to Cogl This adds gives Cogl a dedicated UProf context which will be linked together with Clutter's context during clutter_init_real(). Initial timers cover _cogl_journal_flush and _cogl_journal_log_quad You can explicitly ask for a report of Cogl statistics by exporting COGL_PROFILE_OUTPUT_REPORT=1 but since the context is linked with Clutter's the statisitcs will also be shown in the automatic Clutter reports. cogl/Makefile.am | 2 + cogl/cogl-journal.c | 19 +++++++++++++++++ cogl/cogl-profile.c | 30 ++++++++++++++++++++++++++++ cogl/cogl-profile.h | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 105 insertions(+), 0 deletions(-) commit e9c4a0467b8f65531e5f8670332f3c7af07359ee Author: Emmanuele Bassi Date: Tue Jan 5 18:02:29 2010 +0000 Covert stb_image.c to Unix format The file is still in DOS format (CRLF instead of LF) and this confuses the hell out of some versions of Git. cogl/stb_image.c | 7544 +++++++++++++++++++++++++++--------------------------- 1 files changed, 3772 insertions(+), 3772 deletions(-) commit 932a9e16abccfd409f14f6fa8977923a9fdcacdb Author: Emmanuele Bassi Date: Tue Jan 5 17:54:45 2010 +0000 Include cogl-defines.h before using GL types If we are using GL* types we should also be including cogl-defines.h, as that will include the right GL header. cogl/cogl-shader.h | 1 + cogl/cogl-texture.h | 1 + 2 files changed, 2 insertions(+), 0 deletions(-) commit 928e1adc3d26ae648b5b7bad617c700e0aec65eb Author: Emmanuele Bassi Date: Tue Jan 5 16:11:45 2010 +0000 cogl: Fix array annotations The arrays in the cogl_program_set_uniform_* API should be marked as such, and have their length arguments specified. cogl/cogl-shader.h | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) commit 493bdb48fd782c006e38564daa6fa7b8beb6c7af Merge: 9b441ec ade4e58 Author: Emmanuele Bassi Date: Tue Jan 5 11:04:50 2010 +0000 Merge branch 'matrix-mode' * matrix-mode: build: Move CoglMatrixMode to cogl-matrix-stack.h commit ade4e5839d1c94941d7485ba1483b421e4e226e2 Author: Emmanuele Bassi Date: Mon Jan 4 11:58:32 2010 +0000 build: Move CoglMatrixMode to cogl-matrix-stack.h This avoids a redeclaration of _cogl_matrix_stack_flush_to_gl() from using GLenum to CoglMatrixMode. http://bugzilla.openedhand.com/show_bug.cgi?id=1928 cogl/cogl-internal.h | 7 ------- cogl/cogl-matrix-stack.h | 9 +++++++-- 2 files changed, 7 insertions(+), 9 deletions(-) commit 9b441ec30954c7f9dffa1df5f2adac70076ccc26 Author: Halton Huo Date: Mon Jan 4 11:49:50 2010 +0000 cogl-texture: Remove return in void functions http://bugzilla.o-hand.com/show_bug.cgi?id=1929 Signed-off-by: Emmanuele Bassi cogl/cogl-texture.c | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-) commit 2e510c4ef26858f2766db0f60c833e4c84833f03 Author: Emmanuele Bassi Date: Mon Jan 4 11:49:13 2010 +0000 build: Maintainer cflags go in the _CFLAGS target The maintainer compiler flags are not pre-processor flags. cogl/Makefile.am | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit de5c84c4536f4d46ad555ec73895c90a2b773b14 Author: Emmanuele Bassi Date: Mon Jan 4 11:43:00 2010 +0000 cogl: Const-ify vertices in cogl_polygon() The CoglTextureVertex array passed to cogl_polygon() is a pure in-argument and should be const-ified. http://bugzilla.openedhand.com/show_bug.cgi?id=1917 cogl/cogl-primitives.c | 27 ++++++++++++++------------- cogl/cogl-texture.h | 6 +++--- 2 files changed, 17 insertions(+), 16 deletions(-) commit c6e20029643f4fb6581c3fe89efb2b676bef982f Merge: 1567ab1 5441440 Author: Emmanuele Bassi Date: Wed Dec 23 10:38:02 2009 +0000 Merge branch 'animate-layout-manager' into ebassi-next * animate-layout-manager: layout-manager: Document the animation support layout-manager: Rewind the timeline in begin_animation() box-layout: Remove the allocations hash table docs: Clean up the README file layout: Let begin_animation() return the Alpha box-layout: Add knobs for controlling animations box-layout: Animate layout properties layout: Add animation support to LayoutManager Add ActorBox animation methods commit 1567ab144b3d9c27b467dc7711f3e345d1bc2ece Merge: 9640384 08139ac Author: Emmanuele Bassi Date: Sun Dec 20 17:39:12 2009 +0000 Merge branch 'stage-use-alpha' into ebassi-next * stage-use-alpha: tests: Use accessor methods for :use-alpha stage: Add accessors for :use-alpha tests: Allow setting the stage opacity in test-paint-wrapper stage: Premultiply the stage color stage: Composite the opacity with the alpha channel glx: Always request an ARGB visual stage: Add :use-alpha property materials: Get the right blend function for alpha commit 96403842d0d2ef5bbba01c974f10f03d492f1d9a Merge: cddad17 5441440 Author: Emmanuele Bassi Date: Sun Dec 20 17:33:51 2009 +0000 Merge branch 'internal-flag' into ebassi-next * internal-flag: conform: Add test unit for the destruction of Containers actor: Add internal child flag Clean up whitespace, indentation and comments commit cddad17059313a4445082d47c59f6c52ad001a1c Merge: 5b614a8 5441440 Author: Emmanuele Bassi Date: Thu Dec 10 23:36:04 2009 +0000 Merge branch 'get-current-event' into ebassi-next * get-current-event: Add clutter_get_current_event commit 5b614a87efbba6e10cd8481df44d6fb7f4196dc5 Merge: db881bb 5441440 Author: Emmanuele Bassi Date: Wed Dec 9 23:32:41 2009 +0000 Merge branch 'no-layout-flag' into ebassi-next * no-layout-flag: actor: Add a NO_LAYOUT flag for actors commit db881bb3eeab7d059c4db72bcd701bb181a7a6ea Author: Emmanuele Bassi Date: Wed Dec 9 23:32:18 2009 +0000 Merge branch 'size-cache' into ebassi-next * size-cache: tests: Clean up the BoxLayout interactive test actor: Add debugging notes for size cache Add a cache of size requests commit 568b6fbda1b3992baeddedf9f9856185ca826036 Author: Neil Roberts Date: Sat Dec 5 14:20:00 2009 +0000 cogl-material: Ensure mipmaps before doing anything else on a texture When the texture is in the atlas, ensuring the mipmaps can effectively make it become a completely different texture so we should do this before getting the GL handle. cogl/cogl-material.c | 19 +++++++++++-------- 1 files changed, 11 insertions(+), 8 deletions(-) commit 9139f21e093d9d809ecaa16a0e1d84afea93da32 Author: Neil Roberts Date: Sat Dec 5 13:48:03 2009 +0000 cogl-atlas-texture: Remove textures from the atlas when mipmapping is required Mipmaps don't work very well in the current atlas because there is not enough padding between the textures. If ensure_mipmaps is called it will now create a new texture and migrate the atlased texture to it. It will use the same blit mechanism as when migrating so it will try to use an FBO for a fast blit. However if this is not possible it will end up downloading the data for the entire atlas which is not ideal. cogl/cogl-atlas-texture.c | 66 ++++++++++++++++++++++++++++++++++++++------ 1 files changed, 57 insertions(+), 9 deletions(-) commit 3ebe48105d0254a4d5b4be6831975c0aa7914290 Author: Neil Roberts Date: Sat Dec 5 13:24:01 2009 +0000 cogl-atlas-texture: Try to do texture blits using an FBO When reorganizing the textures, we can avoid downloading the entire texture data if we bind the source texture in a framebuffer object and copy the destination using glCopyTexSubImage2D. This is also implemented using a much faster path in Mesa. Currently it is calling the GL framebuffer API directly but ideally it would use the Cogl offscreen API. However there is no way to tell Cogl not to create a stencil renderbuffer which seems like a waste in this situation. If FBOs are not available it will fallback to reading back the entire texture data as before. cogl/cogl-atlas-texture.c | 198 ++++++++++++++++++++++++++++++++++++++------- 1 files changed, 168 insertions(+), 30 deletions(-) commit 636cef1bd64754e544971c7d691d6179b7d11109 Author: Neil Roberts Date: Fri Dec 4 19:43:39 2009 +0000 cogl-atlas: Add a debug option to visualize the atlas This adds a 'dump-atlas-image' debug category. When enabled, CoglAtlas will use Cairo to create a png which visualizes the leaf rectangles of the atlas. cogl/cogl-atlas.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++ cogl/cogl-debug.c | 3 +- cogl/cogl-debug.h | 3 +- 3 files changed, 80 insertions(+), 2 deletions(-) commit f5d43d9b024f1e94e6e7adfef4c3916a9da3d39d Author: Neil Roberts Date: Fri Dec 4 18:55:53 2009 +0000 cogl-texture-atlas: Add some debugging notes This adds an 'atlas' category to the COGL_DEBUG environment variable. When enabled Cogl will display messages when textures are added to the atlas and when the atlas is reorganized. cogl/cogl-atlas-texture.c | 62 ++++++++++++++++++++++++++++++++++++++++---- cogl/cogl-debug.c | 3 +- cogl/cogl-debug.h | 3 +- 3 files changed, 60 insertions(+), 8 deletions(-) commit ec547b7ce03a021346e7ff1d3e3c30999025a9ce Author: Neil Roberts Date: Fri Dec 4 18:24:15 2009 +0000 cogl-atlas-texture: Support reorganizing the atlas when it is full When space can't be found in the atlas for a new texture it will now try to reorganize the atlas to make space. A new CoglAtlas is created and all of the textures are readded in decreasing size order. If the textures still don't fit then the size of the atlas is doubled until either we find a space or we reach the texture size limits. If we successfully find an organization that fits then all of the textures will be migrated to a new texture. This involves copying the texture data into CPU memory and then uploading it again. Potentially it could eventually use a PBO or an FBO to transfer the image without going through the CPU. The algorithm for laying out the textures works a lot better if the rectangles are added in order so we might eventually want some API for creating multiple textures in one go to avoid reorganizing the atlas as far as possible. cogl/cogl-atlas-texture.c | 315 ++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 280 insertions(+), 35 deletions(-) commit bec2600087dc127619688a593c41e60633f4cba5 Author: Neil Roberts Date: Fri Dec 4 13:06:32 2009 +0000 cogl: Add an atlased texture backend This adds a CoglAtlas type which is a data structure that keeps track of unused sub rectangles of a larger rectangle. There is a new atlased texture backend which uses this to put multiple textures into a single larger texture. Currently the atlas is always sized 256x256 and the textures are never moved once they are put in. Eventually it needs to be able to reorganise the atlas and grow it if necessary. It also needs to migrate the textures out of the atlas if mipmaps are required. cogl/Makefile.am | 4 + cogl/cogl-atlas-texture-private.h | 64 +++++ cogl/cogl-atlas-texture.c | 488 ++++++++++++++++++++++++++++++++++ cogl/cogl-atlas.c | 520 +++++++++++++++++++++++++++++++++++++ cogl/cogl-atlas.h | 76 ++++++ cogl/cogl-context.c | 14 + cogl/cogl-context.h | 8 + cogl/cogl-texture.c | 30 ++- cogl/cogl-types.h | 3 +- 9 files changed, 1194 insertions(+), 13 deletions(-) commit 63c984f193739622b2f1523604d841227eeea63e Author: Neil Roberts Date: Thu Dec 3 14:46:20 2009 +0000 cogl-sub-texture: Fix the height of sub textures The code which is used to get the texture height was accidentally using the width due to a cut-and-paste fail. cogl/cogl-sub-texture.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 05d42ed390232b14a40511bae985c2f58a474859 Author: Neil Roberts Date: Fri Nov 27 18:45:36 2009 +0000 cogl: Add a CoglTexture2D backend This is an optimised version of CoglTexture2DSliced that always deals with a single texture and always uses the GL_TEXTURE_2D target. cogl_texture_new_from_bitmap now tries to use this backend first. If it can't create a texture with that size then it falls back the sliced backend. cogl_texture_upload_data_prepare has been split into two functions because the sliced backend needs to know the real internal format before the conversion is performed. Otherwise the converted bitmap will be wasted if the backend can't support the size. cogl/Makefile.am | 2 + cogl/cogl-texture-2d-private.h | 69 +++++ cogl/cogl-texture-2d.c | 623 ++++++++++++++++++++++++++++++++++++++++ cogl/cogl-texture-private.h | 9 + cogl/cogl-texture.c | 75 ++++-- 5 files changed, 755 insertions(+), 23 deletions(-) commit f17767e4c105d1d172d9496646ec22105e107e31 Author: Neil Roberts Date: Mon Nov 30 12:15:05 2009 +0000 cogl: Add _cogl_texture_driver_upload_to_gl This provides a way to upload the entire data for a texture without having to first call glTexImage and then glTexSubImage. This should be faster especially with indirect rendering where it would needlessy send the data for the texture twice. cogl/cogl-texture-driver.h | 14 +++++++++ cogl/driver/gl/cogl-texture-driver.c | 26 +++++++++++++++++ cogl/driver/gles/cogl-texture-driver.c | 47 ++++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+), 0 deletions(-) commit 8753422ef53608b90cef24e35dee10b01dede14e Author: Neil Roberts Date: Fri Nov 27 16:59:51 2009 +0000 cogl: Move some of the texture_2d_sliced_new_* functions into cogl-texture new_from_data and new_from_file can be implemented in terms of new_from_bitmap so it makes sense to move these to cogl-texture rather than having to implement them in every texture backend. cogl/cogl-texture-2d-sliced-private.h | 16 ------ cogl/cogl-texture-2d-sliced.c | 84 --------------------------------- cogl/cogl-texture.c | 44 +++++++++++++---- 3 files changed, 33 insertions(+), 111 deletions(-) commit c9cafc798c5245a034a9537cbf390b652e17ac16 Author: Neil Roberts Date: Fri Nov 27 16:39:16 2009 +0000 cogl: Add a sub texture backend This adds a new texture backend which represents a sub texture of a larger texture. The texture is created with a reference to the full texture and a set of coordinates describing the region. The backend simply defers to the full texture for all operations and maps the coordinates to the other range. You can also use coordinates outside the range [0,1] to create a repeated version of the full texture. A new public API function called cogl_texture_new_from_sub_texture is available to create the sub texture. cogl/Makefile.am | 2 + cogl/cogl-sub-texture-private.h | 56 +++ cogl/cogl-sub-texture.c | 699 ++++++++++++++++++++++++++++++++++ cogl/cogl-texture.c | 15 +- cogl/cogl-texture.h | 27 ++ doc/reference/cogl/cogl-sections.txt | 1 + 6 files changed, 798 insertions(+), 2 deletions(-) commit 7c5aea9b688e7fb3d57cd5a8c5bf2b8095f5f71a Author: Neil Roberts Date: Wed Dec 2 17:17:24 2009 +0000 cogl: Make the callback for foreach_sub_texture_in_region use const The CoglTextureSliceCallback function pointer now takes const pointers for the texture coordinates. This makes it clearer that the callback should not modify the array and therefore the backend can use the same array for both sets of coords. cogl/cogl-journal-private.h | 2 +- cogl/cogl-journal.c | 2 +- cogl/cogl-primitives.c | 14 +++++++------- cogl/cogl-texture-private.h | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) commit 6bc3319c86be6b74e7e0701e11e34d4acfb56017 Author: Neil Roberts Date: Wed Dec 2 13:41:49 2009 +0000 cogl: Add a texture utility function for manually repeating Given a region of texture coordinates this utility invokes a callback enough times to cover the region with a subregion that spans the texture at most once. Eg, if called with tx1 and tx2 as 0.5 and 3.0 it it would invoke the callback with: 0.5,1.0 1.0,2.0 2.0,3.0 Manual repeating is needed by all texture backends regardless of whether they can support hardware repeating because when Cogl calls the foreach_sub_texture_in_region method then it sets the wrap mode to GL_CLAMP_TO_EDGE and no hardware repeating is possible. cogl/cogl-texture-private.h | 14 ++++++ cogl/cogl-texture.c | 102 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+), 0 deletions(-) commit 28e37e9f57275887ae47b83bc87375b91926c534 Author: Neil Roberts Date: Fri Nov 27 15:47:22 2009 +0000 cogl-primitives: Check for repeating after the coordinate transform In _cogl_multitexture_quad_single_primitive we use a wrap mode of GL_CLAMP_TO_EDGE if the texture coordinates are all in the range [0,1] or GL_REPEAT otherwise. This is to avoid pulling in pixels from either side when using GL_LINEAR filter mode and rendering the entire texture. Previously it was checking using the unconverted texture coordinates. This is ok unless the texture backend is radically transforming the texture coordinates, such as in the sub texture backend where the coordinates may map to something completely different. We now check whether the coordinates are in range after converting them. cogl/cogl-primitives.c | 87 ++++++++++++++++++++--------------------------- 1 files changed, 37 insertions(+), 50 deletions(-) commit 25f3b993c61957801fcd2071d4d0cf060b02c886 Author: Neil Roberts Date: Thu Nov 26 18:58:17 2009 +0000 cogl: Move all of the fields from CoglTexture to CoglTexture2DSliced Most of the fields that were previously in CoglTexture are specific to the implementation of CoglTexture2DSliced so they should be placed there instead. For example, the 'mipmaps_dirty' flag is an implementation detail of the ensure_mipmaps function so it doesn't make sense to force all texture backends to have this function. Other fields such as width, height, gl_format and format may make sense for all textures but I've added them as virtual functions instead. This may make more sense for a sub-texture backend for example where it can calculate these based on the full texture. cogl/cogl-texture-2d-sliced-private.h | 25 +++- cogl/cogl-texture-2d-sliced.c | 204 +++++++++++++++++++-------------- cogl/cogl-texture-private.h | 21 +--- cogl/cogl-texture.c | 19 +-- 4 files changed, 149 insertions(+), 120 deletions(-) commit 5030356e0e2a216df803643c00fb18e504fa765b Author: Neil Roberts Date: Thu Nov 26 17:32:52 2009 +0000 cogl: Move data only used for upload out of CoglTexture The CoglTexture struct previously contained some fields which are only used to upload data such as the CoglBitmap and the source GL format. These are now moved to a separate CoglTextureUploadData struct which only exists for the duration of one of the cogl_texture_*_new functions. In cogl-texture there are utility functions which operate on this new struct rather than on CoglTexture directly. Some of the fields that were previously stored in the CoglBitmap struct are now copied to the CoglTexture such as the width, height, format and internal GL format. The rowstride was previously stored in CoglTexture and this was publicly accessible with the cogl_texture_get_rowstride function. However this doesn't seem to be a useful function because there is no need to use the same rowstride again when uploading or downloading new data. Instead cogl_texture_get_rowstride now just calculates a suitable rowstride from the format and width of the texture. cogl/cogl-texture-2d-sliced.c | 344 +++++++++++++++----------------- cogl/cogl-texture-driver.h | 6 +- cogl/cogl-texture-private.h | 51 +++-- cogl/cogl-texture.c | 93 +++++----- cogl/driver/gl/cogl-texture-driver.c | 14 +- cogl/driver/gles/cogl-texture-driver.c | 16 +- 6 files changed, 262 insertions(+), 262 deletions(-) commit 5441440f4790e972ac2f8dd81e61adc5c98c8e58 Author: Neil Roberts Date: Wed Dec 2 21:54:22 2009 +0000 cogl: Use #ifdef GL around GL_TEXTURE_RECTANGLE_ARB Commit 558b17ee1e added support for rectangle textures to the framebuffer code. Under GLES there is no GL_TEXTURE_RECTANGLE_ARB definition so this was breaking the build. The rest of Cogl uses ifdef's around that constant so we should do the same here. cogl/cogl-framebuffer.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) commit d75559b91b939611ae3857edb36dfd98a084987a Author: Emmanuele Bassi Date: Wed Dec 2 11:37:13 2009 +0000 Remove a gtk-doc annotation The Mesa matrix code still has a comment that looks like a gtk-doc annotation. cogl/cogl-matrix-mesa.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 08139ace98fbb322dff13a686c2140ecab6ebac5 Author: Emmanuele Bassi Date: Tue Dec 1 16:22:45 2009 +0000 materials: Get the right blend function for alpha The correct blend function for the alpha channel is: GL_ONE, GL_ONE_MINUS_SRC_ALPHA As per bug 1406. This fix was dropped when the switch to premultiplied alpha was merged. cogl/cogl-material.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit ca7f3fb883e872e76894f85fff20959949b2719c Merge: a8b563b 6c5110c Author: Emmanuele Bassi Date: Tue Dec 1 14:55:19 2009 +0000 Merge branch 'text-direction' * text-direction: docs: Add text-direction accessors Set the default language on the Pango context actor: Set text direction on parenting tests: Display the index inside text-box-layout box-layout: Honour :text-direction text: Dirty layout cache on text direction changes actor: Add :text-direction property Use the newly added ClutterTextDirection enumeration Add ClutterTextDirection enumeration commit a8b563b622e5061dd6d0d1164ca5fa79b24ab008 Author: Neil Roberts Date: Sun Nov 29 20:06:36 2009 +0000 cogl: Enable blending if a lighting colour is semi-transparent We currently enable blending if the material colour has transparency. This patch makes it also enable blending if any of the lighting colours have transparency. Arguably this isn't neccessary because we don't expose any API to enable lighting so there is no bug. However it is currently possible to enable lighting with a direct call to glEnable and this otherwise works so it is a shame not to have it. http://bugzilla.openedhand.com/show_bug.cgi?id=1907 cogl/cogl-material.c | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 deletions(-) commit 120f94d073cb2b005592c26f75e117b28f390a94 Author: Robert Bragg Date: Fri Nov 27 15:24:09 2009 +0000 primitives: Don't use dynamic arrays since VS2008 can't cope with them :-( This changes _cogl_path_fill_nodes_scanlines to use g_alloca instead of using a variable to declare an array length. cogl/cogl-primitives.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 944423a8d99d384635b3d13c1ea18f1fed2e59c3 Author: Robert Bragg Date: Thu Nov 26 19:06:35 2009 +0000 cogl: deprecate cogl_draw_buffer API and replace with a cogl_framebuffer API cogl_push_draw_buffer, cogl_set_draw_buffer and cogl_pop_draw_buffer are now deprecated and new code should use the new cogl_framebuffer_* API instead. Code that previously did: cogl_push_draw_buffer (); cogl_set_draw_buffer (COGL_OFFSCREEN_BUFFER, buffer); /* draw */ cogl_pop_draw_buffer (); should now be re-written as: cogl_push_framebuffer (buffer); /* draw */ cogl_pop_framebuffer (); As can be seen from the example above the rename has been used as an opportunity to remove the redundant target argument from cogl_set_draw_buffer; it now only takes one call to redirect to an offscreen buffer, and finally the term framebuffer may be a bit more familiar to anyone coming from an OpenGL background. cogl/Makefile.am | 4 +- cogl/cogl-clip-stack.c | 74 ++-- cogl/cogl-context.c | 13 +- cogl/cogl-context.h | 4 +- cogl/cogl-draw-buffer-private.h | 133 -------- cogl/cogl-draw-buffer.c | 603 --------------------------------- cogl/cogl-framebuffer-private.h | 124 +++++++ cogl/cogl-framebuffer.c | 618 ++++++++++++++++++++++++++++++++++ cogl/cogl-journal.c | 12 +- cogl/cogl-matrix-stack.c | 6 +- cogl/cogl-primitives.c | 30 +- cogl/cogl-texture.c | 12 +- cogl/cogl-vertex-buffer.c | 6 +- cogl/cogl.c | 80 +++--- cogl/cogl.h | 73 ++++- doc/reference/cogl/cogl-sections.txt | 3 + 16 files changed, 928 insertions(+), 867 deletions(-) commit 7fee8a309bbf4a8dc55a4cb93ee735dec4979173 Author: Robert Bragg Date: Thu Nov 26 17:47:17 2009 +0000 cogl_offscreen: deprecate cogl_offscreen_ref/unref. New code should use cogl_handle_ref/unref cogl/cogl-offscreen.h | 34 +++++++++++++++++++++------------- 1 files changed, 21 insertions(+), 13 deletions(-) commit 1df0e36c6c700ab80943ea0e171b1134ce0ce963 Author: Neil Roberts Date: Wed Nov 25 13:39:45 2009 +0000 cogl: Use a vtable for the texture backends instead of a type and switch Instead of storing an enum with the backend type for each texture and then using a switch statement to decide which function to call, we should store pointers to all of the functions in a struct and have each texture point to that struct. This is potentially slightly faster when there are more backends and it makes implementing new backends easier because it's more obvious which functions have to be implemented. cogl/cogl-texture-2d-sliced-private.h | 62 ---------------- cogl/cogl-texture-2d-sliced.c | 122 +++++++++++++++----------------- cogl/cogl-texture-private.h | 97 +++++++++++++++++++------ cogl/cogl-texture.c | 124 ++++++-------------------------- 4 files changed, 154 insertions(+), 251 deletions(-) commit 95fed739d5bc66e8b382a69c7890e2d325ba820e Author: Robert Bragg Date: Wed Nov 25 02:47:52 2009 +0000 offscreen: cogl_offscreen_new_to_texture now supports GL_TEXTURE_RECTANGLE_ARB cogl_offscreen_new_to_texture previously bailed out if the given texture's GL target was anything but GL_TEXTURE_2D, but it now also allows foreign GL_TEXTURE_RECTANGLE_ARB textures. Thanks to Owen for reporting this issue, ref: https://bugzilla.gnome.org/show_bug.cgi?id=601032 cogl/cogl-draw-buffer.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 32bc0f208852fcf7324b3323cbc094785a432e9b Author: Robert Bragg Date: Tue Nov 24 18:24:07 2009 +0000 debug: remove the COGL_DEBUG=client-side-matrices option Cogl only supports client side matrices so this debug option is no longer useful. cogl/cogl-debug.c | 1 - cogl/cogl-debug.h | 13 ++++++------- 2 files changed, 6 insertions(+), 8 deletions(-) commit 16a09763efcf5067975e9036ebba6aaf405260e3 Author: Robert Bragg Date: Wed Nov 11 12:50:48 2009 +0000 [cogl-material] Adds cogl_material_copy() API cogl_material_copy can be used to create a new CoglHandle referencing a copy of some given material. From now on we will advise that developers always aim to use this function instead of cogl_material_new() when creating a material that is in any way derived from another. By using cogl_material_copy, Cogl can maintain an ancestry for each material and keep track of "similar" materials. The plan is that Cogl will use this information to minimize the cost of GPU state transitions. cogl/cogl-context.c | 13 ++++++--- cogl/cogl-context.h | 4 ++- cogl/cogl-material-private.h | 9 ++++++ cogl/cogl-material.c | 62 +++++++++++++++++++++++++++++++++++------ cogl/cogl-material.h | 18 ++++++++++++ cogl/cogl.c | 6 ++-- 6 files changed, 95 insertions(+), 17 deletions(-) commit 78fb882a4bd782d54d99c373e5c294f4883dfbc1 Author: Robert Bragg Date: Wed Nov 11 12:52:08 2009 +0000 [cogl] remove unused gles/cogl-utils.[c,h] The only function in gles/cogl-utils.c was cogl_util_next_p2() and it's redundant since we also have a cogl/cogl-utils.[c,h] cogl/driver/gles/cogl-util.c | 49 ------------------------------------------ cogl/driver/gles/cogl-util.h | 30 ------------------------- 2 files changed, 0 insertions(+), 79 deletions(-) commit d2ce4f71379f2a2aed2b0e50e80f5c0583ea2866 Author: Robert Bragg Date: Mon Nov 23 11:30:32 2009 +0000 docs: Don't document cogl_flush_gl_state as public API This function was #if 0'd before we released Clutter 1.0 so there's no implementation of it. At some point we thought it might assist with developers breaking out into raw OpenGL. Breaking out to raw GL is a difficult problem though so we decided instead we will wait for a specific use case to arrise before trying to support it. cogl/cogl.c | 8 -------- cogl/cogl.h | 22 ---------------------- doc/reference/cogl/cogl-sections.txt | 1 - 3 files changed, 0 insertions(+), 31 deletions(-) commit d2f8f6c58184fa24c19646bd9f7ed4c314cdc7f2 Author: Neil Roberts Date: Thu Nov 19 16:07:38 2009 +0000 Minor fix to cogl material _cogl_material_get_layer expects a CoglMaterial* pointer but it was being called with a CoglHandle. This doesn't matter because the CoglHandle is actually just the CoglMaterial* pointer anyway but it breaks the ability to change the _cogl_material_pointer_from_handle macro. cogl/cogl-material.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 421b85fcd5585df2177f1e71c436d12274b9e999 Author: Emmanuele Bassi Date: Thu Nov 19 14:30:01 2009 +0000 docs: Add indices to the Cogl API reference The Clutter API reference has an index of the symbols for each minor version, and a list of deprecated symbols. The Cogl API reference should have the same layout. doc/reference/cogl/cogl-docs.xml.in | 23 ++++++++++++++++++++++- 1 files changed, 22 insertions(+), 1 deletions(-) commit 03439aede831649822c115ebe3dc9eb410cf1c65 Author: Emmanuele Bassi Date: Thu Nov 19 13:55:10 2009 +0000 docs: Increase consistency in Cogl documentation cogl/cogl-texture.h | 66 +++++++++++++--------- cogl/cogl-vertex-buffer.h | 134 ++++++++++++++++++++++++--------------------- cogl/cogl.h | 90 ++++++++++++++++-------------- 3 files changed, 157 insertions(+), 133 deletions(-) commit fab83d14f4508b2f1e305328dda7a21abbfc9618 Author: Emmanuele Bassi Date: Thu Nov 19 13:33:26 2009 +0000 docs: Documentation fixes for CoglMatrix Clean up the references, the docbook tags, and the style to fit in with the rest of the API references for Cogl and Clutter. cogl/cogl-matrix.h | 136 ++++++++++++++++++++++++++-------------------------- 1 files changed, 68 insertions(+), 68 deletions(-) commit 800e100c20c1898d623a899d2179e0731089eb5c Author: Emmanuele Bassi Date: Thu Nov 19 13:33:08 2009 +0000 Whitespace fix for cogl-color.h cogl/cogl-color.h | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 80783abf890f672c1bb2de4d5b319d7d02a6cdfd Author: Emmanuele Bassi Date: Thu Nov 19 13:31:38 2009 +0000 docs: Documentation fixes for CoglMaterial Clean up the references, the docbook tags, and the style to fit in with the rest of the API references for Cogl and Clutter. cogl/cogl-material.h | 404 +++++++++++++++++++++++++------------------------- 1 files changed, 205 insertions(+), 199 deletions(-) commit 3f9e26f084b06c0f3b7d821ed49825bb9826cb38 Author: Emmanuele Bassi Date: Thu Nov 19 13:29:02 2009 +0000 docs: Documentation fixes for CoglBitmap • Use the same style for the Cogl API reference as the one used for the Clutter API reference. • Fix the introspection annotations for cogl_bitmap_get_size_from_file() cogl/cogl-bitmap.h | 25 +++++++++++++------------ 1 files changed, 13 insertions(+), 12 deletions(-) commit bae4b213d3fe22063e0b0a152f812e9df5d28597 Author: Emmanuele Bassi Date: Thu Nov 19 12:34:06 2009 +0000 docs: Fix Cogl API reference build • Ignore all the private header files • Add all missing/unused symbols • Remove deprecated symbols from 0.* doc/reference/cogl/Makefile.am | 30 ++++++++++++++++++++++-------- doc/reference/cogl/cogl-sections.txt | 29 ++++++++++++++++++++++++----- 2 files changed, 46 insertions(+), 13 deletions(-) commit feff0213ea0d4b83d9b90e2012f45cf1ab7a107d Author: Emmanuele Bassi Date: Thu Nov 19 12:32:59 2009 +0000 docs: Remove non-gtk-doc annotations The imported Mesa matrix code has some documentation annotations that make gtk-doc very angry. Since it's all private anyway we can safely make gtk-doc ignore the offending stuff. cogl/cogl-matrix-mesa.c | 136 +++++++++++++++++++++++----------------------- cogl/cogl-matrix-mesa.h | 12 ++-- 2 files changed, 74 insertions(+), 74 deletions(-) commit 8f21013ee6a31ea09d457a33d50cca3cf8616169 Author: Neil Roberts Date: Thu Nov 19 11:51:21 2009 +0000 docs: Fix the 'Since' annotation for some functions The 'Since' annotation needs to have a colon after it or gtk-doc won't pick it up. cogl/cogl-material.h | 40 ++++++++++++++++++++-------------------- cogl/cogl-texture.h | 6 +++--- cogl/cogl.h | 4 ++-- 3 files changed, 25 insertions(+), 25 deletions(-) commit b4fc8faaabcface6421ffe4acc47cc5c99706cff Author: Neil Roberts Date: Wed Nov 18 19:09:10 2009 +0000 cogl: Use APIENTRY for GL function pointer declarations This matters for platforms such as Windows that use a different calling covention from the default for GL functions. cogl/driver/gl/cogl-context-driver.h | 6 +++++- cogl/driver/gles/cogl-context-driver.h | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) commit 0f37570e93b894fcd0b3f7dc90586f6c0685ad94 Author: Neil Roberts Date: Wed Nov 18 19:23:57 2009 +0000 build: Fix out-of-tree builds for cogl-defines.h $(COGL_DRIVER)/cogl-defines.h is generated in the configure script so it ends up in the build directory. Therefore the build rule for cogl/cogl-defines.h should depend on the file in $(builddir) not $(srcdir). cogl/Makefile.am | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 2d51159281844fc2a1551065f78007b9e9b8f516 Author: Emmanuele Bassi Date: Wed Nov 18 18:04:13 2009 +0000 docs: Clean up deprecation notices The deprecation notices in gtk-doc should also refer to the release that added the deprecation, and if the deprecated symbol has been replaced by something else then the new symbol should be correctly referenced. cogl/cogl.h | 46 +++++++++++++++++++++++----------------------- 1 files changed, 23 insertions(+), 23 deletions(-) commit 2f2c3fb8392eaf6f570dc713a811bde7e4f34ac9 Author: Emmanuele Bassi Date: Wed Nov 18 17:35:07 2009 +0000 build: Make cogl.h not conditional on driver defines The main COGL header cogl.h is currently created at configure time because it conditionally includes the driver-dependent defines. This sometimes leads to a stale cogl.h with old definitions which can break the build until you clean out the whole tree and start from scratch. We can generate a stable cogl-defines.h at build time from the equivalent driver-dependent header and let cogl.h include that file instead. cogl/Makefile.am | 18 +- cogl/cogl.h | 991 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ cogl/cogl.h.in | 991 ------------------------------------------------------ 3 files changed, 1003 insertions(+), 997 deletions(-) commit b91e8a828feac9f4459aac77c4fa93aff734903d Author: Emmanuele Bassi Date: Wed Nov 18 14:37:43 2009 +0000 build: Add cogl-matrix-private.h to the dist cogl/Makefile.am | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 7372e1d4f91c148a717be32501944bc69f4050f5 Author: Emmanuele Bassi Date: Wed Nov 18 14:34:33 2009 +0000 build: Add cogl-feature-functions.h to the dist cogl/driver/gl/Makefile.am | 1 + cogl/driver/gles/Makefile.am | 3 ++- 2 files changed, 3 insertions(+), 1 deletions(-) commit 0e112c3371050c727cfc37da093650a95b0048a4 Author: Neil Roberts Date: Wed Nov 18 13:23:10 2009 +0000 cogl: Add the missing terminators for the arrays of feature functions _cogl_feature_check expects the array of function names to be terminated with a NULL pointer but I forgot to add this. This was causing crashes depending on what happened to be in memory after the array. cogl/driver/gl/cogl.c | 1 + cogl/driver/gles/cogl.c | 1 + 2 files changed, 2 insertions(+), 0 deletions(-) commit 0927f35e7a3373a88207cabfefcc4c9716061854 Author: Neil Roberts Date: Tue Nov 17 18:06:31 2009 +0000 cogl: Use the GL_EXT_blend_{func,equation}_separate extensions We should use these extensions to check for glBlendFuncSeparate and glBlendEquationSeparate as well as checking the GL version number. cogl/driver/gl/cogl-feature-functions.h | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) commit 2a53b84d18fb4e2839ca8c9f6bccf51f09845424 Author: Neil Roberts Date: Tue Nov 17 17:22:22 2009 +0000 cogl: Don't bother checking for NPOTs or VBOs on later GLs For VBOs, we don't need to check for the extension if the GL version is greater than 1.5. Non-power-of-two textures are given in 2.0. We could also assume shader support in GL 2.0 except that the function names are different from those in the extension so it wouldn't work well with the current mechanism. cogl/driver/gl/cogl-feature-functions.h | 4 +++- cogl/driver/gl/cogl.c | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) commit 058d79dce2a30aab7457b237ff6d42872fe9d4e9 Author: Neil Roberts Date: Tue Nov 17 13:52:40 2009 +0000 cogl: Make it easier to add checks for GL extensions Previously if you need to depend on a new GL feature you had to: - Add typedefs for all of the functions in cogl-defines.h.in - Add function pointers for each of the functions in cogl-context-driver.h - Add an initializer for the function pointers in cogl-context-driver.c - Add a check for the extension and all of the functions in cogl_features_init. If the extension is available under multiple names then you have to duplicate the checks. This is quite tedious and error prone. This patch moves all of the features and their functions into a list of macro invocations in cogl-feature-functions.h. The macros can be redefined to implement all of the above tasks from the same header. The features are described in a struct with a pointer to a table of functions. A new function takes the feature description from this struct and checks for its availability. The feature can take a list of extension names with a list of alternate namespaces (such as "EXT" or "ARB"). It can also detect the feature from a particular version of GL. The typedefs are now gone and instead the function pointer in the Cogl context just directly contains the type. Some of the functions in the context were previously declared with the 'ARB' extension. This has been removed so that now all the functions have no suffix. This makes more sense when the extension could potentially be merged into GL core as well. cogl/Makefile.am | 2 + cogl/cogl-feature-private.c | 141 +++++++++++ cogl/cogl-feature-private.h | 71 ++++++ cogl/cogl-journal.c | 10 +- cogl/cogl-vertex-buffer.c | 21 +- cogl/driver/gl/cogl-context-driver.c | 58 +---- cogl/driver/gl/cogl-context-driver.h | 81 +------ cogl/driver/gl/cogl-defines.h.in | 361 ---------------------------- cogl/driver/gl/cogl-feature-functions.h | 326 +++++++++++++++++++++++++ cogl/driver/gl/cogl-program.c | 89 ++++---- cogl/driver/gl/cogl-shader.c | 27 +- cogl/driver/gl/cogl.c | 369 +++-------------------------- cogl/driver/gles/cogl-context-driver.c | 19 +- cogl/driver/gles/cogl-context-driver.h | 25 +- cogl/driver/gles/cogl-defines.h.in | 70 ------ cogl/driver/gles/cogl-feature-functions.h | 72 ++++++ cogl/driver/gles/cogl.c | 82 +++---- 17 files changed, 794 insertions(+), 1030 deletions(-) commit 8b4a861093583cc7d978aa9128abf3c24c13b743 Author: Neil Roberts Date: Wed Nov 11 16:42:53 2009 +0000 Use the GL_ARB_multitexture extension on GL 1.2 Cogl requires multi-texturing support. This is only available as an extension in GL 1.2 so we should check for it before accepting the driver. http://bugzilla.openedhand.com/show_bug.cgi?id=1875 cogl/driver/gl/cogl.c | 46 +++++++++++++++++++++++++++++++++++++++------- 1 files changed, 39 insertions(+), 7 deletions(-) commit 6b0b07a8a600030b4dfdb6d72dc09f269465540b Author: Neil Roberts Date: Wed Nov 11 13:38:52 2009 +0000 cogl-material: Fallback to BlendFunc if BlendFuncSeparate is unavailable glBlendFuncSeparate is only available in OpenGL 1.4. If we conditionally check for this then Clutter will work with OpenGL 1.2. http://bugzilla.openedhand.com/show_bug.cgi?id=1875 cogl/cogl-material.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-) commit a50907848fa6d05c33688d434675f4a14a6e6f2d Author: Neil Roberts Date: Wed Nov 11 13:26:54 2009 +0000 Validate that the GL version is >= 1.2 There is a new internal Cogl function called _cogl_check_driver_valid which looks at the value of the GL_VERSION string to determine whether the driver is supported. Clutter now calls this after the stage is realized. If it fails then the stage is marked as unrealized and a warning is shown. _cogl_features_init now also checks the version number before getting the function pointers for glBlendFuncSeparate and glBlendEquationSeparate. It is not safe to just check for the presence of the functions because some drivers may define the function without fully implementing the spec. The GLES version of _cogl_check_driver_valid just always returns TRUE because there are no version requirements yet. Eventually the function could also check for mandatory extensions if there were any. http://bugzilla.openedhand.com/show_bug.cgi?id=1875 cogl/cogl.c | 5 +++ cogl/cogl.h.in | 9 +++++ cogl/driver/gl/cogl.c | 87 +++++++++++++++++++++++++++++++++++++++++++---- cogl/driver/gles/cogl.c | 6 +++ 4 files changed, 100 insertions(+), 7 deletions(-) commit d30927290110b1f6443ee8331c272e097217b0b2 Author: Neil Roberts Date: Mon Oct 5 13:37:11 2009 +0100 [cogl-primitives] Don't clear the whole stencil buffer When _cogl_add_path_to_stencil_buffer is used to draw a path we don't need to clear the entire stencil buffer. Instead it can clear just the bounding box of the path. This adds an extra parameter called 'need_clear' which is only set if the stencil buffer is being used for clipping. http://bugzilla.openedhand.com/show_bug.cgi?id=1829 cogl/cogl-clip-stack.c | 6 ++++-- cogl/cogl-primitives.c | 37 ++++++++++++++++++++++++++++++------- 2 files changed, 34 insertions(+), 9 deletions(-) commit c49edf00979f1f89a3b3a2bc783d543f6d3754f5 Author: Neil Roberts Date: Thu Nov 12 17:00:15 2009 +0000 Remove _cogl_flush_matrix_stacks from cogl-internal.h The definition for this function was removed in f7d64e5abvoid so it should be removed from the header too. cogl/cogl-internal.h | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) commit 57d9c3c6689b7d1f10575c6fb049c24f6e408f55 Author: Emmanuele Bassi Date: Wed Nov 11 10:32:39 2009 +0000 cogl: Declare cogl_is_bitmap() The function is automatically defined by the CoglHandle type definition macro, but it still requires to be declared in the header file to be used. cogl/cogl-bitmap.h | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-) commit 6c5110cb4b80faf671b49c0eb98b689e18826a7c Author: Neil Roberts Date: Mon Nov 9 11:50:16 2009 +0000 cogl: Add an initialiser for enable_flags in cogl_begin_gl This fixes a warning about an uninitialised value. It could also potentially fix some crashes for example if the enable_flags value happened to include a bit for enabling a vertex array if no vertex buffer pointer was set. cogl/cogl.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 2fca6087e9bd5f4e453e8b3137476268634aeda2 Author: Emmanuele Bassi Date: Fri Nov 6 15:06:39 2009 +0000 Clean up cogl.h template The inclusion order is mostly random, and it should really be in alphabetic order, just like clutter.h. Also, cogl-vertex-buffer.h is included twice. cogl/cogl.h.in | 17 +++++++++-------- 1 files changed, 9 insertions(+), 8 deletions(-) commit 544543e249d59750a0ed8fdb3ac2d9e333d89d79 Author: Tim Horton Date: Fri Nov 6 11:57:43 2009 +0000 osx: CGBitmapContextCreate can't make 24bpp, alphaless offscreen pixmaps While loading a JPEG from disk (with clutter_texture_new_from_file), I got the following: : CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 24 bits/pixel; 3-component colorspace; kCGImageAlphaNone; 3072 bytes/row. : CGContextDrawImage: invalid context Looking around, I found that CGBitmapContextCreate can't make 24bpp offscreen pixmaps without an alpha channel... This fixes the bug, and seems to not break other things... http://bugzilla.openedhand.com/show_bug.cgi?id=1159 Signed-off-by: Emmanuele Bassi cogl/cogl-bitmap-pixbuf.c | 18 +++--------------- 1 files changed, 3 insertions(+), 15 deletions(-) commit 339b447075218847f376301010cd9dc6478cff37 Author: Emmanuele Bassi Date: Fri Nov 6 14:04:36 2009 +0000 Do not pass flags to g_module_open(NULL) The flags are ignored when opening the main module, so we should pass 0 to avoid confusion when reading the source. cogl/cogl.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit eb0adfe2bcf04987eec40582945592844f0fa310 Author: Emmanuele Bassi Date: Fri Nov 6 11:50:22 2009 +0000 Merge branch 'josh-osx-fixes' * josh-osx-fixes: osx: Fix a warning on Snow Leopard docs: Fix OS X docs to install Ports in correct order osx: Implement the updated ClutterStageWindow interface commit b0c60ce77a21ff1a7916f9601aefd6b26d9cc98d Author: Robert Bragg Date: Thu Nov 5 10:56:24 2009 +0000 [clip-stack] stop using deprecated cogl_clip_push_window_rect API try_pushing_rect_as_window_rect now uses the new cogl_clip_push_window_rectangle API. cogl/cogl-clip-stack.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 2e0e441031fb404310eaf82bc81b4d53350ca277 Author: Robert Bragg Date: Wed Nov 4 19:31:43 2009 +0000 [cogl-clip] deprecate parts and cleanup the API cogl_clip_push() which accepts a rectangle in model space shouldn't have been defined to take x,y,width,height arguments because this isn't consistant with other Cogl API dealing with model space rectangles. If you are using a coordinate system with the origin at the center and the y+ extending up, then x,y,width,height isn't as natural as (x0,y0)(x1,y1). This API has now been replace with cogl_clip_push_rectangle() (As a general note: the Cogl API should only use the x,y,width,height style when the appropriate coordinate space is defined by Cogl to have a top left origin. E.g. window coordinates, or potentially texture coordinates) cogl_clip_push_window_rect() shouldn't have been defined to take float arguments since we only clip with integral pixel precision. We also shouldn't have abbreviated "rectangle". This API has been replaced with cogl_clip_push_window_rectangle() cogl_clip_ensure() wasn't documented at all in Clutter 1.0 and probably no one even knew it existed. This API isn't useful, and so it's now deprecated. If no one complains we may remove the API altogether for Clutter 1.2. cogl_clip_stack_save() and cogl_clip_stack_restore() were originally added to allow us to save/restore the clip when switching to/from offscreen rendering. Now that offscreen draw buffers are defined to own their clip state and the state will be automatically saved and restored this API is now redundant and so deprecated. cogl/cogl-clip-stack.c | 44 +++++++++------- cogl/cogl.h.in | 92 ++++++++++++++++++++++++++++++++-- doc/reference/cogl/cogl-sections.txt | 9 ++- 3 files changed, 117 insertions(+), 28 deletions(-) commit 1af8be2f7076165911e72b10965c92e170e38f30 Author: Robert Bragg Date: Wed Nov 4 20:17:56 2009 +0000 [clip-stack] Internally track model space clip rects as (x0,y0)(x1,y1) pairs Don't track the rectangles as x0,y0,width,height. This is in preparation for some API tidy up. cogl/cogl-clip-stack.c | 113 +++++++++++++++++++++++++----------------------- 1 files changed, 59 insertions(+), 54 deletions(-) commit 6ca49145f4986f6ae8d1a2f4cdd202e9b52d5a18 Author: Robert Bragg Date: Wed Nov 4 19:42:17 2009 +0000 [clip-stack] move lots of supporting code from cogl.c to cogl-clip-stack.c There was quite a bit of code in cogl.c that was only used to support cogl-clip-stack.c, so this has now been moved to cogl-clip-stack.c cogl/cogl-clip-stack.c | 277 +++++++++++++++++++++++++++++++++++++++++++----- cogl/cogl.c | 237 ----------------------------------------- 2 files changed, 250 insertions(+), 264 deletions(-) commit d4ffa2f819737b0f06e7a1b1e83c6c648b11b8ca Author: Robert Bragg Date: Wed Nov 4 16:55:18 2009 +0000 [debug] Adds a COGL_DEBUG=force-scanline-paths For a long time now the GLES driver for Cogl has supported a fallback scanline rasterizer for filling paths when no stencil buffer is available, but now that we build the same cogl-primitives code for GL and GLES I thought it may sometimes be useful for debugging to force Cogl to use the scanline rasterizer instead of the current stencil buffer approach. cogl/cogl-debug.c | 3 ++- cogl/cogl-debug.h | 3 ++- cogl/cogl-primitives.c | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) commit b49f90acb6a2d19a01e567a16928351f7db0747c Author: Robert Bragg Date: Sat Oct 17 04:06:56 2009 +0100 [cogl-primitives] Get rid of driver specific cogl-primitives code These files were practically identical, except the gles code had additional support for filling paths without a stencil buffer. All the driver code has now been moved into cogl/cogl-primitives.c cogl/cogl-primitives.c | 488 +++++++++++++++++++++++++++++++++- cogl/driver/gl/Makefile.am | 1 - cogl/driver/gl/cogl-primitives.c | 313 ---------------------- cogl/driver/gles/Makefile.am | 1 - cogl/driver/gles/cogl-primitives.c | 516 ------------------------------------ 5 files changed, 482 insertions(+), 837 deletions(-) commit 9cfc8acb771e181685c28f02e957c93846a1f0e3 Merge: df920a4 61654a9 Author: Robert Bragg Date: Wed Nov 4 03:46:45 2009 +0000 Merge commit 'cogl-reorg-draw-buffers' * cogl-reorg-draw-buffers: (38 commits) [test-fbo] greatly simplify the test [tests] test-backface-culling: test culling with offscreen rendering [tests] Adds test-cogl-readpixels.c for very basic cogl_read_pixels testing [tests] Adds test-cogl-offscreen to validate offscreen draw buffer [tests] test-cogl-viewport tests semantics of over/under size viewports [test-texture-fbo] comment the colors defined in corner_colors Add a conformance test for clutter_texture_new_from_actor [cogl-texture-2d-sliced] allow COGL_FORMAT_ANY with _new_with_size() [texture] fix rounding when calculating update_fbo viewport offset [texture] switch to a new design for handling offscreen rendering [texture] split out fbo update code from cluter_texture_paint [texture] push/pop draw buffer when painting actors to a texture [texture] Avoid redundant use of cogl_clip_stack_save when drawing offscreen [cogl-draw-buffer] fix Cogl -> GL viewport coord conversion [cogl_clip_push_window_rect] fix Cogl -> GL coordinate conversion [matrix] Adds cogl_matrix_get_inverse API [debug] Adds a COGL_DEBUG=matrices debug option [cogl-matrix] Import Mesa's matrix manipulation code [cogl] avoid any state changes when cogl_set_backface_culling_enable is a nop [cogl] Use clockwise face winding for offscreen buffers with culling enabled ... commit 61654a9ab448d17a03d5b65cacf667c7364f29b9 Author: Robert Bragg Date: Sat Oct 31 00:01:44 2009 +0000 [cogl-texture-2d-sliced] allow COGL_FORMAT_ANY with _new_with_size() It's useful when initialzing offscreen draw buffers to be able to ask Cogl to create a texture of a given size and with the default internal pixel format. cogl/cogl-texture-2d-sliced.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit f910ce2ee55b45d069febab9f78abe45bdb84872 Author: Robert Bragg Date: Sat Oct 31 00:00:33 2009 +0000 [cogl-draw-buffer] fix Cogl -> GL viewport coord conversion Before we call glViewport we need to convert Cogl viewport coordinates (where the origin is defined to be top left) to OpenGL coordinates (where the origin is defined to be bottom left) We weren't considering that offscreen rendering is always upside down and in this case Cogl coordinates == OpenGL coordinates. cogl/cogl-draw-buffer.c | 15 +++++++++++---- 1 files changed, 11 insertions(+), 4 deletions(-) commit 57bd250a71742ca9ab704fb0a5466f4b210a6db8 Author: Robert Bragg Date: Fri Oct 30 23:57:56 2009 +0000 [cogl_clip_push_window_rect] fix Cogl -> GL coordinate conversion Firstly this now uses the draw buffer height not the viewport height when we need to perform a y = height - y conversion, since (as the name suggests) we are dealing with window coordinates not viewport coordinates. Secondly this skips any conversion when the current draw buffer is an offscreen draw buffer since offscreen rendering is always forced to be upside down and in this case Cogl window coordinates == GL window coordinates. cogl/cogl-clip-stack.c | 32 ++++++++++++++++++++++++++------ 1 files changed, 26 insertions(+), 6 deletions(-) commit 28c7e940bf322f96233534f6b769ccd1bcd3b14e Author: Robert Bragg Date: Mon Oct 26 17:51:34 2009 +0000 [matrix] Adds cogl_matrix_get_inverse API This new API takes advantage of the recently imported Mesa code to support inverse matrix calculation. The matrix code keeps track (via internal flags) of the transformations a matrix represents so that it can select an optimized inversion function. Note: although other aspects of the Cogl matrix API have followed a similar style to Cairo's matrix API we haven't added a cogl_matrix_invert API because the inverse of a CoglMatrix is actually cached as part of the CoglMatrix structure meaning a destructive API like cogl_matrix_invert doesn't let users take advantage of this caching design. cogl/cogl-context.h | 3 -- cogl/cogl-matrix-stack.c | 11 ++++++++++ cogl/cogl-matrix-stack.h | 3 ++ cogl/cogl-matrix.c | 33 ++++++++++++++++++++----------- cogl/cogl-matrix.h | 21 ++++++++++++++++++++ cogl/cogl.c | 47 ++++++++------------------------------------- 6 files changed, 65 insertions(+), 53 deletions(-) commit 2126bf60fde7d0d1944fe217adb9eab17179493b Author: Robert Bragg Date: Mon Oct 26 11:01:33 2009 +0000 [debug] Adds a COGL_DEBUG=matrices debug option This adds a COGL_DEBUG=matrices debug option that can be used to trace all matrix manipulation done using the Cogl API. This can be handy when you break something in such a way that a trace is still comparable with a previous working version since you can simply diff a log of the broken version vs the working version to home in on the bug. cogl/cogl-debug.c | 3 +- cogl/cogl-debug.h | 3 +- cogl/cogl-matrix-private.h | 47 ++++++++++++++++++++++++++++++++++++++++++++ cogl/cogl-matrix.c | 20 ++++++++++++++++++ cogl/cogl.c | 5 ++++ 5 files changed, 76 insertions(+), 2 deletions(-) commit 0a1db7c4d878b35dc5b3986b6392643f067b6ffa Author: Robert Bragg Date: Mon Oct 26 08:23:21 2009 +0000 [cogl-matrix] Import Mesa's matrix manipulation code This pulls in code from Mesa to improve our matrix manipulation support. It includes support for calculating the inverse of matrices based on top of a matrix categorizing system that allows optimizing certain matrix types. (the main thing we were after) but also adds some optimisations for rotations. Changes compared to the original code from Mesa: - Coding style is consistent with the rest of Cogl - Instead of allocating matrix->m and matrix->inv using malloc, our public CoglMatrix typedef is large enough to directly contain the matrix, its inverse, a type and a set of flags. - Instead of having a _math_matrix_analyse which updates the type, flags and inverse, we have _math_matrix_update_inverse which essentially does the same thing (internally making use of _math_matrix_update_type_and_flags()) but with additional guards in place to bail out when the inverse matrix is still valid. - When initializing a matrix with the identity matrix we don't immediately initialize the inverse matrix; rather we just set the dirty flag for the inverse (since it's likely the user won't request the inverse of the identity matrix) cogl/Makefile.am | 2 + cogl/cogl-matrix-mesa.c | 1698 +++++++++++++++++++++++++++++++++++++++++++++++ cogl/cogl-matrix-mesa.h | 226 +++++++ cogl/cogl-matrix.c | 39 ++- cogl/cogl-matrix.h | 6 +- 5 files changed, 1967 insertions(+), 4 deletions(-) commit 8ca17f52627f6d6191973352ee5c2624bc0b93bf Author: Robert Bragg Date: Thu Oct 22 19:09:20 2009 +0100 [cogl] avoid any state changes when cogl_set_backface_culling_enable is a nop This is a simple optimization to bail out of cogl_set_backface_culling_enable if it's not resulting in a change of state. cogl/cogl.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 181bf920868847d523438e69cfb36c8975d5ccae Author: Robert Bragg Date: Thu Oct 22 19:01:52 2009 +0100 [cogl] Use clockwise face winding for offscreen buffers with culling enabled Because Cogl defines the origin for texture as top left and offscreen draw buffers can be used to render to textures, we (internally) force all offscreen rendering to be upside down. (because OpenGL defines the origin to be bottom left) By forcing the users scene to be rendered upside down though we also reverse the winding order of all the drawn triangles which may interfere with the users use of backface culling. This patch ensures that we reverse the winding order for a front face (if culling is in use) while rendering offscreen so we don't conflict with the users back face culling. cogl/cogl-context.c | 2 ++ cogl/cogl-context.h | 1 + cogl/cogl-internal.h | 9 +++++++++ cogl/cogl-journal.c | 1 + cogl/cogl-primitives.c | 1 + cogl/cogl-vertex-buffer.c | 1 + cogl/cogl.c | 33 +++++++++++++++++++++++++++++++++ 7 files changed, 48 insertions(+), 0 deletions(-) commit 1acf5cc36f9ca8c92ea12f3f6d0e62c8e159804b Author: Robert Bragg Date: Tue Nov 3 12:54:45 2009 +0000 [cogl_read_pixels] don't force a 4 byte pack alignment Technically this change shouldn't make a difference since we are calling glReadPixels with GL_RGBA GL_UNSIGNED_BYTE which is a 4 byte format and it should always result in the same value according to how OpenGL calculates the location of sequential rows. i.e. k = a/s * ceil(snl/a) where: a = alignment s = component size (1) n = number of components per pixel (4) l = number of pixels in a row gives: k = 4/1 * ceil(4l/4) and k = 1/1 * ceil(4l/1) which are equivalent I'm changing it because I've seen i915 driver code that bails out of hardware accelerated paths if the alignment isn't 1, and because conceptually we have no alignment constraints here so even if the current value has no effect, when we start reading back other formats it may upset things. cogl/cogl.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) commit f59180d073bf1a4e975367860b1f0030dcef3476 Author: Robert Bragg Date: Mon Nov 2 01:11:21 2009 +0000 [cogl_read_pixels] call cogl_flush() before changing glPixelStore state We were previously calling cogl_flush() after setting up the glPixelStore state for calling glReadPixels, but flushing the journal could itself change the glPixelStore state. cogl/cogl.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit d1de286109a66797a0b3badd4fbb3064a5b1335f Author: Robert Bragg Date: Mon Nov 2 01:10:02 2009 +0000 [cogl_read_pixels] ensure we flush the current draw buffer state before reading Make sure we call _cogl_draw_buffer_flush_state() before glReadPixels() to be sure we have bound the correct framebuffer. cogl/cogl.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit b8fe310b6d3b13d00d8380c28f24c1ecf59c8616 Author: Robert Bragg Date: Mon Nov 2 01:12:10 2009 +0000 [cogl_read_pixels] fixes for calculating the y offset when rendering offscreen Since offscreen rendering is forced to be upside down we don't need to do any conversion of the users coordinates to go from Cogl window coordinates to OpenGL window coordinates. cogl/cogl.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) commit 800d18bc196e97d7fb606efe2adc69424effccb4 Author: Robert Bragg Date: Thu Oct 22 16:55:07 2009 +0100 [read-pixels] don't flip data when reading from offscreen draw buffers Since we do all offscreen rendering upside down (so that we can have the origin for texture coordinates be the top left of textures for the cases where offscreen draw buffers are bound to textures) we don't need to flip data read back from an offscreen framebuffer before we we return it to the user. cogl/cogl.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) commit 0f86470eefcf77794180e638d5f098b01bbfb020 Author: Robert Bragg Date: Wed Oct 21 23:22:45 2009 +0100 [clip-stack] tidy up transform_point() code I was originally expecting the code not to handle offset viewports or viewports with a different size to the framebuffer, but it turns out the code worked fine. In the process though I think I made the code slightly more readable. cogl/cogl-clip-stack.c | 32 +++++++++++++++++++++----------- 1 files changed, 21 insertions(+), 11 deletions(-) commit 78ee3f71b2daad28fd686b5dfa9f056b65bd4238 Author: Robert Bragg Date: Tue Nov 3 13:26:58 2009 +0000 [cogl] deprecate cogl_viewport() in favour of cogl_set_viewport() cogl_viewport only accepted a viewport width and height, but there are times when it's also desireable to have a viewport offset so that a scene can be translated after projection but before hitting the framebuffer. cogl/cogl.c | 12 ++++++------ cogl/cogl.h.in | 22 +++++++++++++++++++++- 2 files changed, 27 insertions(+), 7 deletions(-) commit c2a982cf9c7ccd2c2b110c464d86881b5b1689d1 Author: Robert Bragg Date: Wed Oct 21 23:24:28 2009 +0100 [cogl_read_pixels] use buffer not viewport height to calculate y offset glReadPixel takes window coordinates not viewport coordinates so we shouldn't have been assuming that the viewport height == window height. cogl/cogl.c | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-) commit e4fe65552195ffd0e91c9a357731554b177acb03 Author: Robert Bragg Date: Wed Oct 21 23:20:44 2009 +0100 [draw-buffer] Adds cogl_draw_buffer_get_{width,height} API Simply adds missing API to query the width and height of any Cogl draw buffer. cogl/cogl-draw-buffer-private.h | 4 ++++ cogl/cogl-draw-buffer.c | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 0 deletions(-) commit b4770c1e9b27f7816572342b3899b117e5a91adb Author: Robert Bragg Date: Wed Oct 21 23:24:49 2009 +0100 [cogl] Make sure Cogl always knows the current window geometry Because Cogl defines the origin of viewport and window coordinates to be top-left it always needs to know the size of the current window so that Cogl window/viewport coordinates can be transformed into OpenGL coordinates. This also fixes cogl_read_pixels to use the current draw buffer height instead of the viewport height to determine the OpenGL y coordinate to use for glReadPixels. cogl/cogl-context.c | 2 +- cogl/cogl-context.h | 2 +- cogl/cogl-draw-buffer.c | 36 +++++++++++++++++++++++++++++++----- cogl/cogl.h.in | 3 +++ 4 files changed, 36 insertions(+), 7 deletions(-) commit 2d610c230035d39cb6ebfa0bdd9af35f69bda347 Author: Robert Bragg Date: Thu Oct 22 16:13:01 2009 +0100 [cogl] Make sure we draw upside down to offscreen draw buffers First a few notes about Cogl coordinate systems: - Cogl defines the window origin, viewport origin and texture coordinates origin to be top left unlike OpenGL which defines them as bottom left. - Cogl defines the modelview and projection identity matrices in exactly the same way as OpenGL. - I.e. we believe that for 2D centric constructs: windows/framebuffers, viewports and textures developers are more used to dealing with a top left origin, but when modeling objects in 3D; an origin at the center with y going up is quite natural. The way Cogl handles textures is by uploading data upside down in OpenGL terms so that bottom left becomes top left. (Note: This also has the benefit that we don't need to flip the data we get from image decoding libraries since they typically also consider top left to be the image origin.) The viewport and window coords are mostly handled with various y = height - y tweaks before we pass y coordinates to OpenGL. Generally speaking though the handling of coordinate spaces in Cogl is a bit fragile. I guess partly because none of it was design to be, it just evolved from how Clutter defines its coordinates without much consideration or testing. I hope to improve this over a number of commits; starting here. This commit deals with the fact that offscreen draw buffers may be bound to textures but we don't "upload" the texture data upside down, and so if you texture from an offscreen draw buffer you need to manually flip the texture coordinates to get it the right way around. We now force offscreen rendering to be flipped upside down by tweaking the projection matrix right before we submit it to OpenGL to scale y by -1. The tweak is entirely hidden from the user such that if you call cogl_get_projection you will not see this scale. cogl/cogl-context.c | 4 ++++ cogl/cogl-context.h | 4 ++++ cogl/cogl-draw-buffer-private.h | 3 +++ cogl/cogl-matrix-stack.c | 36 ++++++++++++++++++++++++++---------- 4 files changed, 37 insertions(+), 10 deletions(-) commit 4bc947cfcc73f7a44d8e1c715471dc7805def9aa Author: Robert Bragg Date: Thu Oct 22 12:35:33 2009 +0100 [cogl] Ensure features are initialized first in cogl_create_context Previously some context initializing was being done without valid feature flags. cogl/cogl-context.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) commit 49db9f4f775c2308c31bc3bacf64cd9263f70b55 Author: Robert Bragg Date: Sat Oct 17 00:31:26 2009 +0100 [clip-stack] Handle flipped rectangles in try_pushing_rect_as_window_rect() We were ignoring the possibility that the current modelview matrix may flip the incoming rectangle in which case we didn't calculate a valid scissor rectangle for clipping. This fixes: http://bugzilla.o-hand.com/show_bug.cgi?id=1809 (Clipping doesn't work within an FBO) cogl/cogl-clip-stack.c | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) commit bb3a008318c97f573d98b09d7e8fe911548947fa Author: Robert Bragg Date: Fri Sep 25 14:34:34 2009 +0100 [draw-buffers] First pass at overhauling Cogl's framebuffer management Cogl's support for offscreen rendering was originally written just to support the clutter_texture_new_from_actor API and due to lack of documentation and several confusing - non orthogonal - side effects of using the API it wasn't really possible to use directly. This commit does a number of things: - It removes {gl,gles}/cogl-fbo.{c,h} and adds shared cogl-draw-buffer.{c,h} files instead which should be easier to maintain. - internally CoglFbo objects are now called CoglDrawBuffers. A CoglDrawBuffer is an abstract base class that is inherited from to implement CoglOnscreen and CoglOffscreen draw buffers. CoglOffscreen draw buffers will initially be used to support the cogl_offscreen_new_to_texture API, and CoglOnscreen draw buffers will start to be used internally to represent windows as we aim to migrate some of Clutter's backend code to Cogl. - It makes draw buffer objects the owners of the following state: - viewport - projection matrix stack - modelview matrix stack - clip state (This means when you switch between draw buffers you will automatically be switching to their associated viewport, matrix and clip state) Aside from hopefully making cogl_offscreen_new_to_texture be more useful short term by having simpler and well defined semantics for cogl_set_draw_buffer, as mentioned above this is the first step for a couple of other things: - Its a step toward moving ownership for windows down from Clutter backends into Cogl, by (internally at least) introducing the CoglOnscreen draw buffer. Note: the plan is that cogl_set_draw_buffer will accept on or offscreen draw buffer handles, and the "target" argument will become redundant since we will instead query the type of the given draw buffer handle. - Because we have a common type for on and offscreen framebuffers we can provide a unified API for framebuffer management. Things like: - blitting between buffers - managing ancillary buffers (e.g. attaching depth and stencil buffers) - size requisition - clearing cogl/Makefile.am | 2 + cogl/cogl-clip-stack.c | 199 +++++++++---- cogl/cogl-clip-stack.h | 9 +- cogl/cogl-context.c | 34 +-- cogl/cogl-context.h | 20 +- cogl/cogl-draw-buffer-private.h | 126 +++++++ cogl/cogl-draw-buffer.c | 555 ++++++++++++++++++++++++++++++++ cogl/cogl-journal.c | 33 ++- cogl/cogl-primitives.c | 19 +- cogl/cogl-texture.c | 19 +- cogl/cogl-vertex-buffer.c | 14 +- cogl/cogl.c | 220 ++++++++----- cogl/cogl.h.in | 1 + cogl/driver/gl/Makefile.am | 2 - cogl/driver/gl/cogl-context-driver.c | 19 +- cogl/driver/gl/cogl-context-driver.h | 23 +- cogl/driver/gl/cogl-defines.h.in | 28 +- cogl/driver/gl/cogl-fbo.c | 315 ------------------ cogl/driver/gl/cogl-fbo.h | 39 --- cogl/driver/gl/cogl-primitives.c | 99 ++++-- cogl/driver/gl/cogl-texture-driver.c | 2 +- cogl/driver/gl/cogl.c | 114 ++++---- cogl/driver/gles/Makefile.am | 2 - cogl/driver/gles/cogl-context-driver.c | 10 + cogl/driver/gles/cogl-context-driver.h | 17 +- cogl/driver/gles/cogl-defines.h.in | 70 ++++ cogl/driver/gles/cogl-fbo.c | 328 ------------------- cogl/driver/gles/cogl-fbo.h | 39 --- cogl/driver/gles/cogl-primitives.c | 121 ++++++-- cogl/driver/gles/cogl.c | 75 +++++ 30 files changed, 1469 insertions(+), 1085 deletions(-) commit 6b2ff320cab3404a532e194cae853ee9823568f7 Author: Robert Bragg Date: Tue Sep 15 22:19:01 2009 +0100 [cogl-fbo] Bring the gles code more in line with gl code Over time the two cogl-fbo.c files have needlessly diverged as bug fixes or cleanups went into one version but not the other. This tries to bring them back in line with each other. It should actually be simple enough to move cogl-fbo.c to be a common file, and simply not build it for GLES 1.1, so maybe I'll follow up with such a patch soon. cogl/driver/gles/cogl-fbo.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) commit cc0af441f2fe3a731a5338d6fc2c585f4bc017f4 Author: Robert Bragg Date: Tue Sep 15 22:15:03 2009 +0100 [cogl-fbo] Remove poorly documented workaround for unknown driver/hardware The comment just said: "Some implementation require a clear before drawing to an fbo. Luckily it is affected by scissor test." and did a scissored clear, which is clearly a driver bug workaround, but for what driver? The fact that it was copied into the gles backend (or vica versa is also suspicious since it seems unlikely that the workaround is necessary for both backends.) We can easily restore the workaround with a better comment if this problem really still exists on current drivers, but for now I'd rather minimize hand-wavey workaround code that can't be tested. cogl/driver/gl/cogl-fbo.c | 10 ---------- cogl/driver/gles/cogl-fbo.c | 19 ------------------- 2 files changed, 0 insertions(+), 29 deletions(-) commit df920a42df2ad112cc89fa780466b878a4f5b2f4 Author: Emmanuele Bassi Date: Fri Oct 30 12:11:19 2009 +0000 build: Add missing gles/cogl-context-driver.h to dist The gles/cogl-context-driver.h header file is missing from the dist target, which means it's not in the tarballs. cogl/driver/gles/Makefile.am | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 435d415a45862046ec3e4a16095887fe96c873b3 Author: Neil Roberts Date: Tue Oct 27 13:18:51 2009 +0000 [cogl_polygon] Enable COGL_ENABLE_BLEND when use_color is set Otherwise you can't use the alpha channel of the vertex colors unless the material has a texture with alpha or the material's color has alpha less than 255. cogl/cogl-primitives.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 67a896e5df5500112da2e144d7754301af825ad5 Author: Neil Roberts Date: Tue Oct 27 12:38:10 2009 +0000 build: Add $(top_buiddir)/clutter/cogl to the include path in clutter/cogl/cogl Some files try to include "cogl/cogl-defines-gl.h" so $(top_builddir)/clutter/cogl needs to be in the include path for out of tree builds to work. cogl/Makefile.am | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit be06fe0b757a08fd4b7ac74a340ab229ca52e774 Author: Emmanuele Bassi Date: Fri Oct 23 16:44:28 2009 +0100 cogl: Avoid C99-isms Do not declare variables after statements. cogl/cogl.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit edeca915cdbdf295cf38cd39f1e058520db1c00e Author: Emmanuele Bassi Date: Fri Oct 23 15:46:25 2009 +0100 cogl: Remove cogl-current-matrix.c The cogl-current-matrix.c file is unused since commit 5e5d94dfbed18bf2b4c8c7a7ff9847952b2c4ae2 and it's not compiled or distributed anymore. cogl/cogl-current-matrix.c | 409 -------------------------------------------- 1 files changed, 0 insertions(+), 409 deletions(-) commit fcce83360627eb40b6ada3026f6d4dff264abd73 Author: Emmanuele Bassi Date: Fri Oct 23 12:15:25 2009 +0100 build: Make COGL pass distcheck Some changes to make COGL pass distcheck with Automake 1.11 and anal-retentiveness turned up to 11. The "major" change is the flattening of the winsys/ part of COGL, which is built directly inside libclutter-cogl.la instead of an intermediate libclutter-cogl-winsys.la object. Ideally, the whole COGL should be flattened out using a quasi-non-recursive Automake layout; unfortunately, the driver/ sub-section ships with identical targets and Automake cannot distinguish GL and GLES objects. cogl/Makefile.am | 196 +++++++++++++++++++++++----------------------- cogl/winsys/Makefile.am | 43 ---------- 2 files changed, 98 insertions(+), 141 deletions(-) commit 6cff24f437566e217fdb87beb6e178758a652072 Author: Neil Roberts Date: Thu Oct 22 16:55:29 2009 +0100 Fix some compilation errors in cogl-gles2-wrapper.c The changes in 74f2122b6 introduced some syntax errors which were preventing the GLES2 backend from compiling. cogl/driver/gles/cogl-gles2-wrapper.c | 27 ++++++++++++--------------- 1 files changed, 12 insertions(+), 15 deletions(-) commit aeaf50ec114a15d15c18b92db650d8de3c5ffdd0 Author: Neil Roberts Date: Thu Oct 22 15:39:30 2009 +0100 Remove cogl/{gl,gles}/Makefile.am These are no longer used anywhere. gl/Makefile.am | 62 -------------------------------------- gles/Makefile.am | 88 ------------------------------------------------------ 2 files changed, 0 insertions(+), 150 deletions(-) commit c02e10c68842be125a56b3f59b4c6e14bc0a51dd Author: Robert Bragg Date: Tue Sep 29 02:56:23 2009 +0100 [gles2] remove lots of redundant matrix stack code Since we no longer depend on the GL matrix API in Cogl we can remove a lot of wrapper code from the GLES 2 backend. This is particularly nice given that there was no code shared between the cogl-matrix-stack API and gles2 wrappers so we had a lot of duplicated logic. cogl/driver/gles/cogl-gles2-wrapper.c | 287 ++++----------------------------- cogl/driver/gles/cogl-gles2-wrapper.h | 9 +- 2 files changed, 34 insertions(+), 262 deletions(-) commit eed247955632173f4628d6c18ece26e79e6be98c Author: Robert Bragg Date: Tue Oct 13 23:09:42 2009 +0100 [cogl] Removes the cogl-current-matrix abstraction The indirection through this API isn't necessary since we no longer arbitrate between the OpenGL matrix API and Cogl's client side API. Also it doesn't help to maintain an OpenGL style matrix mode API for internal use since it's awkward to keep restoring the MODELVIEW mode and easy enough to directly work with the matrix stacks of interest. This replaces use of the _cogl_current_matrix API with direct use of the _cogl_matrix_stack API. All the unused cogl_current_matrix API is removed and the matrix utility code left in cogl-current-matrix.c was moved to cogl.c. cogl/Makefile.am | 2 - cogl/cogl-clip-stack.c | 15 ++- cogl/cogl-context.c | 8 +- cogl/cogl-context.h | 4 +- cogl/cogl-current-matrix.h | 95 --------------- cogl/cogl-internal.h | 14 ++- cogl/cogl-material.c | 2 + cogl/cogl-texture.c | 28 ++--- cogl/cogl-util.c | 1 - cogl/cogl.c | 228 ++++++++++++++++++++++++++++++----- cogl/driver/gl/cogl-fbo.c | 26 ++--- cogl/driver/gl/cogl-primitives.c | 24 +--- cogl/driver/gles/cogl-fbo.c | 27 ++--- cogl/driver/gles/cogl-primitives.c | 24 +--- doc/reference/cogl/Makefile.am | 1 - 15 files changed, 271 insertions(+), 228 deletions(-) commit 01887460f6051cb107b3a03934eee411ac382a3f Author: Robert Bragg Date: Wed Oct 14 10:53:48 2009 +0100 [matrix-stack] Adds ctx->flushed_matrix_mode to cache the gl matrix mode This cache of the gl matrix mode lets us avoid repeat calls to glMatrixMode in _cogl_matrix_stack_flush_to_gl when we have lots of sequential modelview matrix modifications. cogl/cogl-context.c | 1 + cogl/cogl-context.h | 1 + cogl/cogl-matrix-stack.c | 30 ++++++++++++++++++------------ 3 files changed, 20 insertions(+), 12 deletions(-) commit 43f8032a7f658245edee77133f3cc970aa6820ed Author: Robert Bragg Date: Tue Oct 6 12:36:32 2009 +0100 matrix-stack: more optimization for load_identity case This goes a bit further than the previous patch, and as a special case we now simply represent identity matrices using a boolean, and only lazily initialize them when they need to be modified. cogl/cogl-matrix-stack.c | 82 +++++++++++++++++++++++++++++++++++++++------ 1 files changed, 71 insertions(+), 11 deletions(-) commit d15331604501dae4d6071de4092b91e88c02b3f8 Author: Robert Bragg Date: Tue Oct 6 10:52:07 2009 +0100 [matrix-stack] avoid redundant clearing of matrix when using load_identity The journal always uses an identity matrix since it uses software transformation. Currently it manually uses glLoadMatrix since previous experimentation showed that the cogl-matrix-stack gave bad performance, but it would be nice to fix performance so we only have to care about one path for loading matrices. For the common case where we do: cogl_matrix_stack_push() cogl_matrix_stack_load_identity() we were effectively initializing the matrix 3 times. Once due to use of g_slice_new0, then we had a cogl_matrix_init_identity in _cogl_matrix_state_new for good measure, and then finally in cogl_matrix_stack_load_identity we did another cogl_matrix_init_identity. We don't use g_slice_new0 anymore, _cogl_matrix_state_new is documented as not initializing the matrix (instead _cogl_matrix_stack_top_mutable now takes a boolean to choose if new stack entries should be initialised) and so we now only initialize once in cogl_matrix_stack_load_identity. cogl/cogl-matrix-stack.c | 54 ++++++++++++++++++++++----------------------- 1 files changed, 26 insertions(+), 28 deletions(-) commit 1402d1eb3c9fd2d9207b7089fb29b34eb594e059 Author: Robert Bragg Date: Tue Sep 29 02:58:27 2009 +0100 [current-matrix] Adds texture matrix stacks + removes GL matrix API usage This relates back to an earlier commitment to stop using the OpenGL matrix API which is considered deprecated. (ref 54159f5a1d029db) The new texture matrix stacks are hung from a list of (internal only) CoglTextureUnit structures which the CoglMaterial code internally references via _cogl_get_texure_unit (). So we would be left with only the cogl-matrix-stack code being responsible for glMatrixMode, glLoadMatrix and glLoadIdentity this commit updates the journal code so it now uses the matrix-stack API instead of GL directly. cogl/cogl-context.c | 4 + cogl/cogl-context.h | 5 +- cogl/cogl-current-matrix.c | 236 +++++++++----------------------------------- cogl/cogl-internal.h | 12 +++ cogl/cogl-journal.c | 33 ++++--- cogl/cogl-material.c | 22 +++-- cogl/cogl-matrix-stack.c | 15 +++- cogl/cogl.c | 59 +++++++++++ 8 files changed, 174 insertions(+), 212 deletions(-) commit d8107c5ef52eb28b7e25626830bed20ab1cadea1 Merge: 861766f 76480b4 Author: Emmanuele Bassi Date: Mon Oct 19 11:45:15 2009 +0100 Merge branch 'layout-manager' * layout-manager: (50 commits) docs: Reword a link layout, docs: Add more documentation to LayoutManager layout, docs: Fix description of Bin properties layout, bin: Use ceilf() instead of casting to int layout, docs: Add long description for FlowLayout layout, box: Clean up layout, box: Write long description for Box layout, docs: Remove unused functions layout: Document BoxLayout layout: Add BoxLayout, a single line layout manager layout: Report the correct size of FlowLayout layout: Resizing the stage resizes the FlowLayout box layout: Use the get_request_mode() getter in BinLayout layout: Change the request-mode along with the orientation actor: Add set_request_mode() method [layout] Remove FlowLayout:wrap [layout] Rename BinLayout and FlowLayout interactive tests [layout] Skip invisible children in FlowLayout [layout] Clean up and document FlowLayout [layout] Snap children of FlowLayout to column/row ... commit 861766f4ad8f8d984e37643dcb7db0914c2e9b1b Author: Robert Bragg Date: Wed Sep 16 14:01:57 2009 +0100 [cogl-primitives] Split the journal out from cogl-primitives.c The Journal can be considered a standalone component, so even though it's currently only used to log quads, it seems better to split it out into its own file. cogl/Makefile.am | 2 + cogl/cogl-context.c | 1 + cogl/cogl-journal-private.h | 57 ++++ cogl/cogl-journal.c | 744 +++++++++++++++++++++++++++++++++++++++++++ cogl/cogl-primitives.c | 705 +---------------------------------------- cogl/cogl-texture-private.h | 14 - 6 files changed, 805 insertions(+), 718 deletions(-) commit 5387aa0e9e509f962f6007f6860e1168db43583c Author: Robert Bragg Date: Wed Sep 23 15:11:55 2009 +0100 [cogl-spans] split out cogl-spans code from cogl-texture-2d-sliced When we implement atlas textures we will probably want to use the spans API to handle texture repeating so it doesn't make sense to leave the code in cogl-texture-2d-sliced.c. Since it's a standalone set of data structures and algorithms it also seems reasonable to split out from cogl-texture. cogl/Makefile.am | 2 + cogl/cogl-spans.c | 132 ++++++++++++++++++++++ cogl/cogl-spans.h | 70 ++++++++++++ cogl/cogl-texture-2d-sliced-private.h | 27 ----- cogl/cogl-texture-2d-sliced.c | 195 ++++++++------------------------- 5 files changed, 248 insertions(+), 178 deletions(-) commit 65015a137e8e1b2957e219c08dc9ae823ef5b527 Author: Vladimir Nadvornik Date: Sun Aug 30 12:36:11 2009 +0200 [cogl-texture] Split CoglTexture into an abstract class + CoglTexture2dSliced cogl-texture-2d-sliced provides an implementation of CoglTexture and this seperation lays the foundation for potentially supporting atlas textures, pixmap textures (as in GLX_EXT_texture_from_pixmap) and fast-path GL_TEXTURE_{1D,2D,3D,RECTANGLE} textures in a maintainable fashion. cogl/Makefile.am | 2 + cogl/cogl-context.c | 2 + cogl/cogl-context.h | 2 + cogl/cogl-handle.h | 4 +- cogl/cogl-texture-2d-sliced-private.h | 191 ++++ cogl/cogl-texture-2d-sliced.c | 1871 +++++++++++++++++++++++++++++++ cogl/cogl-texture-driver.h | 12 + cogl/cogl-texture-private.h | 80 +- cogl/cogl-texture.c | 1926 +++++++------------------------- cogl/driver/gl/cogl-texture-driver.c | 97 +-- cogl/driver/gles/cogl-context-driver.c | 2 - cogl/driver/gles/cogl-context-driver.h | 2 - cogl/driver/gles/cogl-texture-driver.c | 217 +---- 13 files changed, 2551 insertions(+), 1857 deletions(-) commit c40d5ae9eaff0f7ace613a4c530a2219f6cbe6c3 Author: Robert Bragg Date: Wed Sep 16 11:56:17 2009 +0100 [cogl-texture] Seal CoglTexture internals from cogl-primitives.c cogl-primitives.c was previously digging right into CoglTextures so it could manually iterate the texture slices for texturing quads and polygons and because we were missing some state getters we were lazily just poking into the structures directly. This adds some extra state getter functions, and adds a higher level _cogl_texture_foreach_slice () API that hopefully simplifies the way in which sliced textures may be used to render primitives. This lets you specify a rectangle in "virtual" texture coords and it will call a given callback for each slice that intersects that rectangle giving the virtual coords of the current slice and corresponding "real" texture coordinates for the underlying gl texture. At the same time a noteable bug in how we previously iterated sliced textures was fixed, whereby we weren't correctly handling inverted texture coordinates. E.g. with the previous code if you supplied texture coords of tx1=100,ty1=0,tx2=0,ty2=100 (inverted along y axis) that would result in a back-facing quad, which could be discarded if using back-face culling. cogl/cogl-material.c | 9 +- cogl/cogl-primitives.c | 736 +++++++++++++++++++++---------------------- cogl/cogl-texture-private.h | 47 ++-- cogl/cogl-texture.c | 239 +++++++++++++- cogl/cogl-vertex-buffer.c | 6 +- cogl/driver/gl/cogl-fbo.c | 29 +- cogl/driver/gles/cogl-fbo.c | 29 +- 7 files changed, 640 insertions(+), 455 deletions(-) commit c943b34cbeda803c66783976c5aec80601901dca Author: Robert Bragg Date: Thu Jul 30 12:06:02 2009 +0100 [docs] switch gl_handle+gl_target docs for cogl_texture_new_from_foreign The descriptions for gl_handle and gl_target were inverted. Thanks to Young-Ho Cha for spotting that. Signed-off-by: Robert Bragg cogl/cogl-texture.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 17e899a49d7d657f57103804bc2c59f526528a34 Author: Robert Bragg Date: Wed Jul 29 17:21:07 2009 +0100 [cogl] move clutter/pango to clutter/cogl/pango As part of the re-organisation of Cogl; move clutter/pango to be part of the cogl sub-project. Makefile.am | 2 +- pango/Makefile.am | 33 ++ pango/cogl-pango-display-list.c | 417 +++++++++++++++++++++++ pango/cogl-pango-display-list.h | 70 ++++ pango/cogl-pango-fontmap.c | 209 ++++++++++++ pango/cogl-pango-glyph-cache.c | 352 ++++++++++++++++++++ pango/cogl-pango-glyph-cache.h | 78 +++++ pango/cogl-pango-private.h | 38 +++ pango/cogl-pango-render.c | 697 +++++++++++++++++++++++++++++++++++++++ pango/cogl-pango.h | 85 +++++ 10 files changed, 1980 insertions(+), 1 deletions(-) commit 0bce7eac5375936d9ac6486f13cef94298f8590e Author: Robert Bragg Date: Tue Jul 28 02:02:02 2009 +0100 Intial Re-layout of the Cogl source code and introduction of a Cogl Winsys As part of an incremental process to have Cogl be a standalone project we want to re-consider how we organise the Cogl source code. Currently this is the structure I'm aiming for: cogl/ cogl/ winsys/ cogl-glx.c cogl-wgl.c driver/ gl/ gles/ os/ ? utils/ cogl-fixed cogl-matrix-stack? cogl-journal? cogl-primitives? pango/ The new winsys component is a starting point for migrating window system code (i.e. x11,glx,wgl,osx,egl etc) from Clutter to Cogl. The utils/ and pango/ directories aren't added by this commit, but they are noted because I plan to add them soon. Overview of the planned structure: * The winsys/ API is the API that binds OpenGL to a specific window system, be that X11 or win32 etc. Example are glx, wgl and egl. Much of the logic under clutter/{glx,osx,win32 etc} should migrate here. * Note there is also the idea of a winsys-base that may represent a window system for which there are multiple winsys APIs. An example of this is x11, since glx and egl may both be used with x11. (currently only Clutter has the idea of a winsys-base) * The driver/ represents a specific varient of OpenGL. Currently we have "gl" representing OpenGL 1.4-2.1 (mostly fixed function) and "gles" representing GLES 1.1 (fixed funciton) and 2.0 (fully shader based) * Everything under cogl/ should fundamentally be supporting access to the GPU. Essentially Cogl's most basic requirement is to provide a nice GPU Graphics API and drawing a line between this and the utility functionality we add to support Clutter should help keep this lean and maintainable. * Code under utils/ as suggested builds on cogl/ adding more convenient APIs or mechanism to optimize special cases. Broadly speaking you can compare cogl/ to OpenGL and utils/ to GLU. * clutter/pango will be moved to clutter/cogl/pango How some of the internal configure.ac/pkg-config terminology has changed: backendextra -> CLUTTER_WINSYS_BASE # e.g. "x11" backendextralib -> CLUTTER_WINSYS_BASE_LIB # e.g. "x11/libclutter-x11.la" clutterbackend -> {CLUTTER,COGL}_WINSYS # e.g. "glx" CLUTTER_FLAVOUR -> {CLUTTER,COGL}_WINSYS clutterbackendlib -> CLUTTER_WINSYS_LIB CLUTTER_COGL -> COGL_DRIVER # e.g. "gl" Note: The CLUTTER_FLAVOUR and CLUTTER_COGL defines are kept for apps As the first thing to take advantage of the new winsys component in Cogl; cogl_get_proc_address() has been moved from cogl/{gl,gles}/cogl.c into cogl/common/cogl.c and this common implementation first trys _cogl_winsys_get_proc_address() but if that fails then it falls back to gmodule. Makefile.am | 89 +- TODO | 25 - cogl-bitmap.h | 80 - cogl-color.h | 261 -- cogl-debug.h | 79 - cogl-deprecated.h | 36 - cogl-fixed.h | 782 ----- cogl-material.h | 781 ----- cogl-matrix.h | 290 -- cogl-offscreen.h | 96 - cogl-path.h | 347 -- cogl-shader.h | 313 -- cogl-texture.h | 465 --- cogl-types.h | 328 -- cogl-vertex-buffer.h | 452 --- cogl.h.in | 875 ----- cogl.pc.in | 15 - cogl/Makefile.am | 161 + cogl/cogl-bitmap-fallback.c | 460 +++ cogl/cogl-bitmap-pixbuf.c | 368 +++ cogl/cogl-bitmap-private.h | 115 + cogl/cogl-bitmap.c | 208 ++ cogl/cogl-bitmap.h | 80 + cogl/cogl-blend-string.c | 1005 ++++++ cogl/cogl-blend-string.h | 138 + cogl/cogl-clip-stack.c | 503 +++ cogl/cogl-clip-stack.h | 43 + cogl/cogl-color.c | 201 ++ cogl/cogl-color.h | 261 ++ cogl/cogl-context.c | 215 ++ cogl/cogl-context.h | 131 + cogl/cogl-current-matrix.c | 549 ++++ cogl/cogl-current-matrix.h | 95 + cogl/cogl-debug.c | 131 + cogl/cogl-debug.h | 79 + cogl/cogl-deprecated.h | 36 + cogl/cogl-enum-types.c.in | 41 + cogl/cogl-enum-types.h.in | 25 + cogl/cogl-fixed.c | 950 ++++++ cogl/cogl-fixed.h | 782 +++++ cogl/cogl-handle.h | 157 + cogl/cogl-internal.h | 88 + cogl/cogl-material-private.h | 255 ++ cogl/cogl-material.c | 1972 +++++++++++ cogl/cogl-material.h | 781 +++++ cogl/cogl-matrix-stack.c | 363 +++ cogl/cogl-matrix-stack.h | 82 + cogl/cogl-matrix.c | 282 ++ cogl/cogl-matrix.h | 290 ++ cogl/cogl-offscreen.h | 96 + cogl/cogl-path.h | 347 ++ cogl/cogl-primitives.c | 2329 +++++++++++++ cogl/cogl-primitives.h | 62 + cogl/cogl-shader.h | 313 ++ cogl/cogl-texture-driver.h | 157 + cogl/cogl-texture-private.h | 151 + cogl/cogl-texture.c | 1682 ++++++++++ cogl/cogl-texture.h | 465 +++ cogl/cogl-types.h | 328 ++ cogl/cogl-util.c | 252 ++ cogl/cogl-util.h | 30 + cogl/cogl-vertex-buffer-private.h | 169 + cogl/cogl-vertex-buffer.c | 2016 ++++++++++++ cogl/cogl-vertex-buffer.h | 452 +++ cogl/cogl.c | 879 +++++ cogl/cogl.h.in | 875 +++++ cogl/cogl.pc.in | 17 + cogl/driver/Makefile.am | 7 + cogl/driver/gl/Makefile.am | 39 + cogl/driver/gl/cogl-context-driver.c | 84 + cogl/driver/gl/cogl-context-driver.h | 103 + cogl/driver/gl/cogl-defines.h.in | 1053 ++++++ cogl/driver/gl/cogl-fbo.c | 330 ++ cogl/driver/gl/cogl-fbo.h | 39 + cogl/driver/gl/cogl-primitives.c | 282 ++ cogl/driver/gl/cogl-program.c | 255 ++ cogl/driver/gl/cogl-program.h | 39 + cogl/driver/gl/cogl-shader-private.h | 39 + cogl/driver/gl/cogl-shader.c | 177 + cogl/driver/gl/cogl-texture-driver.c | 454 +++ cogl/driver/gl/cogl.c | 443 +++ cogl/driver/gles/Makefile.am | 62 + cogl/driver/gles/cogl-context-driver.c | 41 + cogl/driver/gles/cogl-context-driver.h | 44 + cogl/driver/gles/cogl-defines.h.in | 638 ++++ cogl/driver/gles/cogl-fbo.c | 343 ++ cogl/driver/gles/cogl-fbo.h | 39 + cogl/driver/gles/cogl-fixed-fragment-shader.glsl | 62 + cogl/driver/gles/cogl-fixed-vertex-shader.glsl | 65 + cogl/driver/gles/cogl-gles2-wrapper.c | 1635 ++++++++++ cogl/driver/gles/cogl-gles2-wrapper.h | 433 +++ cogl/driver/gles/cogl-primitives.c | 453 +++ cogl/driver/gles/cogl-program.c | 338 ++ cogl/driver/gles/cogl-program.h | 43 + cogl/driver/gles/cogl-shader-private.h | 40 + cogl/driver/gles/cogl-shader.c | 221 ++ cogl/driver/gles/cogl-texture-driver.c | 481 +++ cogl/driver/gles/cogl-util.c | 49 + cogl/driver/gles/cogl-util.h | 30 + cogl/driver/gles/cogl.c | 64 + cogl/driver/gles/stringify.sh | 94 + cogl/stb_image.c | 3772 ++++++++++++++++++++++ cogl/winsys/Makefile.am | 43 + cogl/winsys/cogl-eglnative.c | 35 + cogl/winsys/cogl-eglx.c | 35 + cogl/winsys/cogl-fruity.c | 35 + cogl/winsys/cogl-glx.c | 78 + cogl/winsys/cogl-osx.c | 35 + cogl/winsys/cogl-sdl.c | 35 + cogl/winsys/cogl-win32.c | 35 + cogl/winsys/cogl-winsys.h | 30 + common/Makefile.am | 96 - common/cogl-bitmap-fallback.c | 460 --- common/cogl-bitmap-pixbuf.c | 368 --- common/cogl-bitmap-private.h | 115 - common/cogl-bitmap.c | 208 -- common/cogl-blend-string.c | 1005 ------ common/cogl-blend-string.h | 138 - common/cogl-clip-stack.c | 503 --- common/cogl-clip-stack.h | 43 - common/cogl-color.c | 201 -- common/cogl-context.c | 215 -- common/cogl-context.h | 131 - common/cogl-current-matrix.c | 549 ---- common/cogl-current-matrix.h | 95 - common/cogl-debug.c | 131 - common/cogl-enum-types.c.in | 41 - common/cogl-enum-types.h.in | 25 - common/cogl-fixed.c | 950 ------ common/cogl-handle.h | 157 - common/cogl-internal.h | 88 - common/cogl-material-private.h | 255 -- common/cogl-material.c | 1972 ----------- common/cogl-matrix-stack.c | 363 --- common/cogl-matrix-stack.h | 81 - common/cogl-matrix.c | 282 -- common/cogl-primitives.c | 2329 ------------- common/cogl-primitives.h | 62 - common/cogl-texture-driver.h | 157 - common/cogl-texture-private.h | 151 - common/cogl-texture.c | 1682 ---------- common/cogl-util.c | 252 -- common/cogl-util.h | 30 - common/cogl-vertex-buffer-private.h | 169 - common/cogl-vertex-buffer.c | 2016 ------------ common/cogl.c | 858 ----- common/stb_image.c | 3772 ---------------------- doc/reference/cogl/Makefile.am | 11 +- gl/cogl-context-driver.c | 84 - gl/cogl-context-driver.h | 103 - gl/cogl-defines.h.in | 1053 ------ gl/cogl-fbo.c | 330 -- gl/cogl-fbo.h | 39 - gl/cogl-primitives.c | 282 -- gl/cogl-program.c | 255 -- gl/cogl-program.h | 39 - gl/cogl-shader-private.h | 39 - gl/cogl-shader.c | 177 - gl/cogl-texture-driver.c | 454 --- gl/cogl.c | 515 --- gles/cogl-context-driver.c | 41 - gles/cogl-context-driver.h | 44 - gles/cogl-defines.h.in | 638 ---- gles/cogl-fbo.c | 343 -- gles/cogl-fbo.h | 39 - gles/cogl-fixed-fragment-shader.glsl | 62 - gles/cogl-fixed-vertex-shader.glsl | 65 - gles/cogl-gles2-wrapper.c | 1635 ---------- gles/cogl-gles2-wrapper.h | 433 --- gles/cogl-primitives.c | 453 --- gles/cogl-program.c | 338 -- gles/cogl-program.h | 43 - gles/cogl-shader-private.h | 40 - gles/cogl-shader.c | 221 -- gles/cogl-texture-driver.c | 481 --- gles/cogl-util.c | 49 - gles/cogl-util.h | 30 - gles/cogl.c | 74 - gles/stringify.sh | 94 - 179 files changed, 34125 insertions(+), 33762 deletions(-) commit b85af722f4890e5d22ccd429441b6c6b82d2a391 Author: Robert Bragg Date: Tue Jul 28 01:34:33 2009 +0100 Make the CoglContext structure a bit more maintainable This moves most of cogl-context.{c.h} to cogl/common with some driver specific members now living in a CoglContextDriver struct. Driver specific context initialization and typedefs now live in cogl/{gl,gles}/cogl-context-driver.{c,h} Driver specific members can be found under ctx->drv.stuff common/Makefile.am | 2 + common/cogl-blend-string.c | 2 +- common/cogl-context.c | 215 +++++++++++++++++++++++++++++++++++ common/cogl-context.h | 131 ++++++++++++++++++++++ common/cogl-material.c | 14 +- common/cogl-primitives.c | 12 +- common/cogl-vertex-buffer.c | 26 ++-- common/cogl.c | 2 +- gl/Makefile.am | 2 +- gl/cogl-context-driver.c | 84 ++++++++++++++ gl/cogl-context-driver.h | 103 +++++++++++++++++ gl/cogl-context.c | 259 ------------------------------------------- gl/cogl-context.h | 197 -------------------------------- gl/cogl-fbo.c | 24 ++-- gl/cogl-primitives.c | 2 +- gl/cogl-program.c | 50 ++++---- gl/cogl-shader.c | 12 +- gl/cogl-texture-driver.c | 2 +- gl/cogl.c | 224 +++++++++++++++++++------------------- gles/Makefile.am | 2 +- gles/cogl-context-driver.c | 41 +++++++ gles/cogl-context-driver.h | 44 ++++++++ gles/cogl-context.c | 214 ----------------------------------- gles/cogl-context.h | 136 ---------------------- gles/cogl-fbo.c | 8 +- gles/cogl-gles2-wrapper.c | 2 +- gles/cogl-program.c | 16 ++-- gles/cogl-texture-driver.c | 14 +- 28 files changed, 828 insertions(+), 1012 deletions(-) commit 739b460c7a16693fb98fea5af4dc0daa9688c47a Author: Robert Bragg Date: Tue Jul 28 00:37:11 2009 +0100 Improve cogl-texture maintainability by moving 90% into cogl/common This splits the limited components that differed between cogl/{gl,gles}/cogl-texture.c into new {gl,gles}/cogl-texture-driver.c files and the rest that can now be shared into cogl/common/cogl-texture.c common/Makefile.am | 3 + common/cogl-internal.h | 1 + common/cogl-texture-driver.h | 157 ++++ common/cogl-texture-private.h | 151 +++ common/cogl-texture.c | 1682 +++++++++++++++++++++++++++++++++ gl/Makefile.am | 3 +- gl/cogl-texture-driver.c | 454 +++++++++ gl/cogl-texture-private.h | 145 --- gl/cogl-texture.c | 1996 --------------------------------------- gles/Makefile.am | 3 +- gles/cogl-gles2-wrapper.h | 1 + gles/cogl-texture-driver.c | 481 ++++++++++ gles/cogl-texture-private.h | 144 --- gles/cogl-texture.c | 2066 ----------------------------------------- 14 files changed, 2932 insertions(+), 4355 deletions(-) commit 4f5e6b77d51b902bb7b54eee0d153492544e1b25 Merge: 4221e13 76480b4 Author: Emmanuele Bassi Date: Fri Oct 16 15:55:05 2009 +0100 Merge branch 'bug-1846' * bug-1846: Fix warning message in the ParamSpec validation commit 4221e13feb3d5a6e49cc3f4a57e76b14fe04bcb2 Author: Emmanuele Bassi Date: Fri Oct 16 15:55:04 2009 +0100 Merge branch 'bug-1845' * bug-1845: Add a warning when ClutterInterval can't compute progress commit 76480b466f61f8938d0c424685218ac9e351be1d Author: Emmanuele Bassi Date: Wed Oct 7 17:35:11 2009 +0100 docs: Add the "clipping" section to the COGL API reference All the clip-related API in COGL is missing from the API reference because the cogl-clipping section is not included inside the main index file. doc/reference/cogl/cogl-docs.xml.in | 1 + doc/reference/cogl/cogl-sections.txt | 3 ++- 2 files changed, 3 insertions(+), 1 deletions(-) commit b5c120dda328c308bd30e44cd4f877bb7cc5328b Merge: c21f73f 0b4837d Author: Emmanuele Bassi Date: Mon Oct 5 12:37:08 2009 +0100 Merge branch 'stage-window-object' * stage-window-object: [x11] Fix Stage user-initiated resize [x11] Remove a useless forced paint [stage] Rework the Stage implementation class commit c21f73ff884e87b399cfe6dc4a819b5d288f2720 Author: Robert Bragg Date: Tue Jul 28 00:40:29 2009 +0100 [cogl-debug] avoid warnings when using COGL_NOTE with unbraced else clauses When not building a debug build the compiler was warning about empty else clauses with no braces due to code like: if (blah) do_foo(); else COGL_NOTE (DRAW, "a-wibble"); This simply ensures that even for non debug builds COGL_NOTE will expand to a single statement. cogl-debug.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 61e6c57bdd95ec22a04c440ec6087e4bb24c2095 Author: Robert Bragg Date: Thu Sep 24 17:34:26 2009 +0100 [cogl-vertex-buffer] fix n_components validation for GL's builtin attributes glVertexPointer expects positions with 2, 3 or 4 components, glColorPointer expects colors with 3 or 4 components and glNormalPointer expects normals with three components so when adding vertex buffer atributes with the names "gl_Vertex", "gl_Color" or "gl_Normal" we assert these constraints and print an explanation to the developer if not met. This also fixes the previosly incorrect constraint that gl_Normal attributes must have n_components == 1; thanks to Cat Sidhe for reporting this: Bug: http://bugzilla.openedhand.com/show_bug.cgi?id=1819 common/cogl-vertex-buffer.c | 19 +++++++++++++++---- 1 files changed, 15 insertions(+), 4 deletions(-) commit 84441610de4e58d358f9a94c568609d79c8ce8fb Author: Damien Lespiau Date: Mon Sep 21 15:21:21 2009 +0100 Add a few annotations on Cogl primitives functions By default, float * is considered as an out argument by gobject introspection which is wrong for quite a few Cogl symbols. Start adding annotations to fix that for the ones in the "Primitives" gtk-doc section. cogl-path.h | 8 ++++---- cogl-texture.h | 15 ++++++++------- 2 files changed, 12 insertions(+), 11 deletions(-) commit e7ee24048343269244651ec024db6918558046d1 Author: Neil Roberts Date: Thu Sep 17 18:29:03 2009 +0100 [cogl] Remove CoglContext->journal_vbo{,_len} The lifetime of the journal VBO is entirely within the scope of the cogl_journal_flush function so there is no need to store it globally in the Cogl context. Instead, upload_vertices_to_vbo just returns the new VBO. cogl_journal_flush stores this in a local variable and destroys it before returning. This also fixes an assertion when using the GLES backend which was caused by nothing initialising the journal_vbo variable. common/cogl-primitives.c | 20 ++++++++++---------- gl/cogl-context.c | 2 -- gl/cogl-context.h | 2 -- gles/cogl-context.h | 1 - 4 files changed, 10 insertions(+), 15 deletions(-) commit 83fc188f73fa23345fc593d66cee965f1991e1ea Author: Emmanuele Bassi Date: Wed Sep 16 17:43:58 2009 +0100 [build] Split out the custom silent rules The silent rules we use for custom targets should be moved into a separate Makefile.am that gets included from all the others. Makefile.am | 8 ++------ common/Makefile.am | 8 ++------ gl/Makefile.am | 2 ++ gles/Makefile.am | 2 ++ 4 files changed, 8 insertions(+), 12 deletions(-) commit eb6728f0623955207bcbccc49bf6cf4da8095fd1 Author: Robert Bragg Date: Tue Sep 15 16:27:45 2009 +0100 [cogl-fbo] Disable mipmap filters before calling glCheckFramebufferStatusEXT The framebuffer_object spec isn't clear in defining whether attaching a texture as a renderbuffer with mipmap filtering enabled while the mipmaps have not been uploaded should result in an incomplete framebuffer object. (different drivers make different decisions) To avoid an error with drivers that do consider this a problem we explicitly set non mipmapped filters before calling glCheckFramebufferStatusEXT. The filters will later be reset when the texture is actually used for rendering according to the filters set on the corresponding CoglMaterial. gl/cogl-fbo.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-) commit d07ab704d4a0d9b6d6d6827aae30315f7b21577e Author: Emmanuele Bassi Date: Mon Sep 7 11:44:44 2009 +0100 [docs] Small annotation fixes cogl-material.h | 29 ++++++++++++++++++----------- cogl-texture.h | 7 ++++--- 2 files changed, 22 insertions(+), 14 deletions(-) commit 0b4837d8a299d9c7702c6e73aabbc4a8091f6737 Author: Samuel Degrande Date: Wed Sep 2 16:27:22 2009 +0100 DOT3_RGB[A] cannot be used in a Blend String The blend string compiler checks that the syntax of a function name is [A-Za-z_]*, preventing the use of DOT3_RGB[A]. Signed-off-by: Emmanuele Bassi common/cogl-blend-string.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) commit e72747cbb879b23b26a1f89433a7b7c202481c4f Author: Neil Roberts Date: Mon Aug 24 12:50:57 2009 +0100 [cogl-texture] Set GL_PACK_ROW_LENGTH when downloading texture data Otherwise the rowstride passed in from an application is not used correctly so you can not download to an area with a much larger rowstride. gl/cogl-texture.c | 14 +++++++++++--- 1 files changed, 11 insertions(+), 3 deletions(-) commit 5f566c2833c096d890f6c73695d28b70e43ec209 Author: Robert Bragg Date: Thu Aug 20 12:53:32 2009 +0100 Revert "[cogl] Allow Cogl to create NPOT textures for GLES2" This reverts commit 3c47a3beb51462ef8af1070b75123660059e97d0. Of course I remembered just after pushing the patch why we hadn't done this before :-) If you look in the glsl spec: http://www.khronos.org/registry/gles/specs/2.0/es_full_spec_2.0.24.pdf Section 3.7.10 Texture Completeness and Non-Power-Of-Two Textures you can see GLES 2.0 doesn't support mipmaps for npot textures. There is possibly some way we could support this in Cogl but at least it's not as simple as or-ing in the feature flag, sadly. gles/cogl.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit bf1ed7d67e86a3ed19e8ce1e57d38129ff7263a1 Author: Robert Bragg Date: Thu Aug 20 12:15:21 2009 +0100 [cogl] Allow Cogl to create NPOT textures for GLES2 The core GLES2 API supports NPOT textures, i.e. there is no extension as for OpenGL, so we now add COGL_FEATURE_TEXTURE_NPOT to the feature flags in _cogl_features_init. Thanks to Gordon Williams for spotting this. gles/cogl.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 391477e67ba76ee7119b71a23350e2c1c4752811 Author: Robert Bragg Date: Wed Aug 19 15:38:25 2009 +0100 [cogl] %.c: %.glsl codegen: use BUILT_SOURCES var + fix stringify.sh Don't let stringify.sh write to the $srcdir + use the BUILT_SOURCES var in Makefile.am so as to ensure all .c. and .h files get generated from their corresponding .glsl files before building other targets. gles/Makefile.am | 14 +++++++++----- gles/stringify.sh | 40 +++++++++++++++++++--------------------- 2 files changed, 28 insertions(+), 26 deletions(-) commit 0aa31b4ebc4938627a9993e109043da6184939ad Author: Emmanuele Bassi Date: Mon Aug 10 12:45:44 2009 +0200 Use AM_SILENT_RULES if automake >= 1.11 is installed Fixes bug: http://bugzilla.openedhand.com/show_bug.cgi?id=1756 Based on a patch by: Javier Jardón Makefile.am | 6 ++++-- common/Makefile.am | 7 ++++--- 2 files changed, 8 insertions(+), 5 deletions(-) commit 9a55b0c3ff10d940fae95fd66501a93e32da95b9 Author: Robert Bragg Date: Tue Aug 18 16:13:13 2009 +0100 [cogl-material] Fix some brackets in _layer_flush_gl_sampler_state The wrong part of an expression was bracketed in the test to determine when a new texture matrix needed to be loaded which resulted in the first pass through _cogl_material_layer_flush_gl_sampler_state not uploading any user matrix. common/cogl-material.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit ffd47f5b56fe2f02a4ee350be913f2ba5fdf3d51 Author: Emmanuele Bassi Date: Tue Aug 18 11:11:29 2009 +0100 [docs] texture_polygon() is called polygon() Remove the mentions to the old name of cogl_polygon(). cogl-types.h | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) commit 7f1659f9c78ab58c311839da573189400af250b0 Author: Götz Waschk Date: Mon Aug 17 14:12:21 2009 +0100 Update Clutter to use G-I 0.6.4 Following bug #1762, the syntax of g-ir-scanner was changed in gobject-introspection, so Clutter does not build anymore with 0.6.4. See the bugzilla bug: http://bugzilla.gnome.org/show_bug.cgi?id=591669 GObject-Introspection now uses a different mechanism to extract the SONAME when building the gir file and it needs the libtool archive as option. Signed-off-by: Emmanuele Bassi Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 7feae6702696e70bb0f98ba58682772833b25fb3 Author: Emmanuele Bassi Date: Thu Aug 13 16:15:04 2009 +0100 [docs] Remove the version number from the title The version number in the title made sense when we were breaking API with every minor release. Now that we're API stable we can drop that and make the output in Devhelp and on the website slightly more good looking. doc/reference/cogl/cogl-docs.xml.in | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) commit c460786e9e43698d6fbe45c52dda7d1398096c3d Author: zhou jiangwei Date: Tue Aug 11 14:17:28 2009 +0100 [cogl] Fix the GLES 2.0 backend Update the GLES 2.0 backend to the new COGL API after the breakage introduced by the journal. Signed-off-by: Emmanuele Bassi common/cogl-primitives.c | 5 +++-- gles/cogl-context.h | 5 ++++- gles/cogl-gles2-wrapper.h | 5 +++++ gles/cogl-primitives.c | 10 +++++----- gles/cogl-texture-private.h | 3 +++ 5 files changed, 20 insertions(+), 8 deletions(-) commit 1bdfb9e6d4740c8de9fd0490d5b08676ce6b2441 Author: Robert Bragg Date: Tue Aug 11 13:49:12 2009 +0100 [cogl_clear] Also pass the alpha component of the CoglColor to glClearColor Previously we were passing a constant of 0.0 for the alpha component which wasn't as flexible. common/cogl.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 23bd5ecd47c02d54bb616efcaa78c207ba10d6cc Merge: ac5314c 5d43728 Author: Emmanuele Bassi Date: Mon Aug 10 17:21:20 2009 +0100 Merge branch 'system-json-glib' * system-json-glib: [script] Simplify the parser code Update JSON-GLib dependency commit ac5314c6d2e550aebe99afcfadd62197956952f3 Author: Emmanuele Bassi Date: Tue Aug 4 11:38:48 2009 +0100 [docs] Fix a missing parameter cogl-vertex-buffer.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit ff833fa068ba0ba3125485159ad53302edf40ca6 Author: Emmanuele Bassi Date: Tue Aug 4 11:10:55 2009 +0100 [cogl] Expose cogl_is_vertex_buffer() The function is public and available in the shared object, but it's not present in the header, so this is not an API/ABI change. cogl-vertex-buffer.h | 14 ++++++++++++++ doc/reference/cogl/cogl-sections.txt | 1 + 2 files changed, 15 insertions(+), 0 deletions(-) commit 68f3c87f967c37c1fa98a3f57a14191f37b70921 Author: Emmanuele Bassi Date: Tue Jul 28 13:57:07 2009 +0100 Fix compiler warnings when COGL debug level=minimum common/cogl-debug.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 05dabd1aa5d03af64248ba2114a90f3ac984e938 Author: Ole André Vadla Ravnås Date: Tue Jul 7 20:02:25 2009 +0200 Avoid near/far identifier names. Leads to conflict with system headers on Windows, where macros named "near" and "far" are defined. common/cogl-matrix.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 237553984e6e45a2e93bc6c6c803fedc664af278 Author: Ole André Vadla Ravnås Date: Wed Jul 1 16:27:11 2009 +0200 Call glClientActiveTexture() through COGL context. Fixes build issues on systems with OpenGL header older than 1.3. common/cogl.c | 4 ++++ gl/cogl-primitives.c | 2 ++ 2 files changed, 6 insertions(+), 0 deletions(-) commit 243b22640dcdd10a75d3b1f2910be6405ace0f52 Author: Ole André Vadla Ravnås Date: Tue Jun 16 22:29:21 2009 +0200 Avoid C99 to fix compilation with compilers like MSVC. common/cogl-blend-string.c | 20 ++++++++++---------- common/cogl-primitives.c | 8 ++++++-- common/cogl.c | 4 +++- 3 files changed, 19 insertions(+), 13 deletions(-) commit 584eca5eee1d1febc486594b1f8c7ac218fcf45c Author: Haakon Sporsheim Date: Tue Mar 31 14:37:07 2009 +0200 Reposition variable declarations to avoid C99. common/cogl-material.c | 3 ++- common/cogl-matrix.c | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) commit ab88c0a8885bcfccd7c56cef0d81b4147a24c31d Author: Emmanuele Bassi Date: Mon Jul 27 16:51:14 2009 +0100 [build] Use API_VERSION, not MAJORMINOR The correct macro for Clutter's API version is CLUTTER_API_VERSION, not CLUTTER_MAJORMINOR anymore. doc/reference/cogl/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit d1b8cab65d25ae00dc919390b231ad9c9b4f41ba Author: Emmanuele Bassi Date: Mon Jul 20 12:49:35 2009 +0100 [doc] Miscellaneous documentation fixes Remove private symbols, and add missing public ones. cogl-material.h | 79 ++++++++++++++++++--------------- cogl-types.h | 16 +++++++ cogl.h.in | 31 +++++++------ doc/reference/cogl/Makefile.am | 7 +++ doc/reference/cogl/cogl-sections.txt | 22 +--------- 5 files changed, 83 insertions(+), 72 deletions(-) commit 1da8ce3429d95228eb46326f6f796c0a13deaaf9 Author: Emmanuele Bassi Date: Mon Jul 20 12:47:53 2009 +0100 [cogl] Make the blend string error domain public The error domain and codes must present in a publicly installed header otherwise they won't be usable to match a GError. cogl-types.h | 11 +++++++++++ common/cogl-blend-string.c | 2 +- common/cogl-blend-string.h | 13 ------------- 3 files changed, 12 insertions(+), 14 deletions(-) commit afe10f9897b1789685ee9173c82db680fc5a84f9 Author: Robert Bragg Date: Sun Jul 19 10:08:32 2009 +0100 [doc] Remove references to cogl_vertex_buffer_delete_indices These referencese were left over from before indices got CoglHandles to uniquely identify them. cogl_handle_unref can be used to delete indices now. cogl-vertex-buffer.h | 14 -------------- doc/reference/cogl/cogl-sections.txt | 1 - 2 files changed, 0 insertions(+), 15 deletions(-) commit c570014360d9e5725d843e9cebb9dd8f88cec32a Author: Emmanuele Bassi Date: Sat Jul 18 16:59:54 2009 +0100 [cogl/gles] Fix missing symbols in CoglContext Keep the CoglContext in sync between GL and GLES backends. We ought to find a way to have a generic context, though, and have backend specific sections. Fixes bug: http://bugzilla.openedhand.com/show_bug.cgi?id=1698 gles/cogl-context.h | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-) commit b00fb8598ae06f34805eab2981f87b6931fda55a Author: Owen W. Taylor Date: Fri Jul 17 15:10:06 2009 -0400 Fix building introspection when dolt is not in use On some platforms (anything but Linux, and on obscure Linux architectures) dolt isn't used, so $(top_builddir)/doltlibtool won't exist. $(top_builddir)/libtool will always be generated even if dolt is used, so just use that unconditionally. We don't need the extra speed when linking the single program for introspection. http://bugzilla.openedhand.com/show_bug.cgi?id=1699 Signed-off-by: Emmanuele Bassi Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit ec89082e4bf9b5c1dbcfff42e794a9cd7b343f5f Author: Evan Martin Date: Sun Jul 12 01:38:40 2009 +0100 [docs] Fix typos and remove mentions of SVN Signed-off-by: Emmanuele Bassi cogl-path.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit af49769b33a4596208cc5496883051ffbba0c0f9 Author: Robert Bragg Date: Tue Jul 7 16:16:56 2009 +0100 [cogl] Fix more brokeness with _cogl_material_equal commit e2c4a2a9f83 fixed one thing but broke many others things :-/ hopfully this fixes that. It turned out that the journal was mistakenly setting the OVERRIDE_LAYER0 flush option for all entries, but some other logic errors were also uncovered in _cogl_material_equal. common/cogl-material.c | 73 +++++++++++++++++++++++++++++++++------------ common/cogl-primitives.c | 7 +++- 2 files changed, 58 insertions(+), 22 deletions(-) commit a8e93e8588ef57f5a176f7e2e84f481b696fae8b Author: Robert Bragg Date: Sat Jul 4 00:15:49 2009 +0100 [cogl] Fix drawing with sliced textures using material layer0 overrides To help us handle sliced textures; When flushing materials there is an override option that can be given to replace the texture name for layer0 so we may iterate the slices without needing to modify the material in use. Since improving the journal's ability to batch state changes we added a _cogl_material_equals function that is used by the journal to compare materials and identify when a state change is required, but this wasn't correctly considering the layer0 override resulting in false positives that meant the journal wouldn't update the GL state and the first texture name was used for all slices. common/cogl-material-private.h | 3 +- common/cogl-material.c | 208 +++++++++++++++++++++++++++------------- common/cogl-primitives.c | 3 +- 3 files changed, 144 insertions(+), 70 deletions(-) commit fffcf579d5c7e3d97f1641b0cb0433c23700f484 Author: Robert Bragg Date: Fri Jul 3 00:34:10 2009 +0100 [cogl matrix stack] Create a client side matrix stack for the projection matrix The cost of glGetFloatv with Mesa is still representing a majority of our time in OpenGL for some applications, and the last thing left using this is the current-matrix API when getting the projection matrix. This adds a matrix stack for the projection matrix, so all getting, setting and modification of the projection matrix is now managed by Cogl and it's only when we come to draw that we flush changes to the matrix to OpenGL. This also brings us closer to being able to drop internal use of the deprecated OpenGL matrix functions, re: commit 54159f5a1d02 common/cogl-current-matrix.c | 105 +++++++++++++++++++++++++---------------- common/cogl-current-matrix.h | 2 + common/cogl-matrix-stack.c | 8 +--- common/cogl-matrix.c | 1 + common/cogl-primitives.c | 10 +++- common/cogl-vertex-buffer.c | 4 +- common/cogl.c | 7 ++- gl/cogl-context.h | 1 + gl/cogl-primitives.c | 6 +- 9 files changed, 85 insertions(+), 59 deletions(-) commit fcc3d56209f5783f21388599ebe2b9c262a07291 Author: Emmanuele Bassi Date: Wed Jul 1 12:34:54 2009 +0100 Split the typdef to avoid confusing scanners Scanners like gtk-doc and g-ir-scanner get confused by: typedef struct _Foo { ... } Foo; And expect instead: typedef struct _Foo Foo; struct _Foo { ... }; CoglMatrix definition should be changed to avoid the former type. cogl-matrix.h | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) commit a6880643a08d8387bbbae84a040758d283520e38 Author: Emmanuele Bassi Date: Thu Jun 25 14:39:57 2009 +0100 Add debug notes for calls to glViewport() In order to validate the sequence of: XResizeWindow ConfigureNotify glViewport that should happen on X11 we need to add debug annotations to the calls to glViewport() done through COGL. common/cogl.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 82ef6b51b9876c82e72d514ef7d8932cdf409e41 Author: Robert Bragg Date: Wed Jul 1 12:57:30 2009 +0100 [cogl] cache the viewport width and height This avoids some calls to glGetFloatv, which have at least proven to be very in-efficient in mesa at this point in time, since it always updates all derived state even when it may not relate to the state being requested. common/cogl.c | 30 ++++++++++++++++-------------- gl/cogl-context.c | 3 +++ gl/cogl-context.h | 3 +++ gl/cogl-fbo.c | 2 +- 4 files changed, 23 insertions(+), 15 deletions(-) commit fdc048ddd0c91de5929ec36b2ec05b1091704a64 Author: Robert Bragg Date: Fri Jun 19 12:15:12 2009 +0100 [cogl] Ensure well defined semantics for COGL_INVALID_HANDLE material layers Fixes and adds a unit test for creating and drawing using materials with COGL_INVALID_HANDLE texture layers. This may be valid if for example the user has set a texture combine string that only references a constant color. _cogl_material_flush_layers_gl_state will bind the fallback texture for any COGL_INVALID_HANDLE layer, later though we could explicitly check when the current blend mode does't actually reference a texture source in which case binding the fallback texture is redundant. This tests drawing using cogl_rectangle, cogl_polygon and cogl_vertex_buffer_draw. common/cogl-material.c | 8 +++++++- common/cogl-primitives.c | 35 ++++++++++++++++++++++++++++------- common/cogl-vertex-buffer.c | 10 ++++++++-- 3 files changed, 43 insertions(+), 10 deletions(-) commit 4d55d146b3974f919d7f46515573ee0cfc029247 Merge: 096c1df b4bc9eb Author: Robert Bragg Date: Tue Jun 30 17:17:30 2009 +0100 Merge branch 'cogl-journal-batching' [cogl] Improve ability to break out into raw OpenGL via begin/end mechanism Adds a cogl_flush() to give developers breaking into raw GL a fighting chance [cogl-material] Be more carefull about flushing in cogl_material_remove_layer Revert "[rectangle] Avoid modifying materials mid scene" Revert "[actor] Avoid modifying materials mid-scene to improve journal batching" [cogl-vertex-buffer] Disable unused client tex coord arrays [cogl] disable all client tex coord arrays in _cogl_add_path_to_stencil_buffer [cogl] flush matrices in _cogl_add_path_to_stencil_buffer [journal] Don't resize a singlton VBO; create and destroy a VBO each flush [cogl] avoid using the journal in _cogl_add_path_to_stencil_buffer [pango-display-list] Use the Cogl journal for short runs of text [material] _cogl_material_equal: catch the simplest case of matching handles [material] avoid flushing the journal when just changing the color [cogl journal] Perform software modelview transform on logged quads. [Cogl journal] use G_UNLIKLEY around runtime debugging conditions [cogl journal] Adds a --cogl-debug=batching option to trace batching [Cogl journal] Adds a --cogl-debug=journal option for tracing the journal [cogl] Adds a debug option for disabling use of VBOs --cogl-debug=disable-vbos [cogl] Force Cogl to always use the client side matrix stack [cogl-debug] Adds a "client-side-matrices" Cogl debug option [cogl-color] Adds a cogl_color_equal() function [cogl material] optimize logging of material colors in the journal [rectangle] Avoid modifying materials mid scene [actor] Avoid modifying materials mid-scene to improve journal batching [journal] Always pad our vertex data as if at least 2 layers are enabled [cogl] Improving Cogl journal to minimize driver overheads + GPU state changes The Cogl journal is a mechanism Cogl uses to batch geometry resulting from any of the cogl_rectangle* functions before sending it to OpenGL. This aims to improve the Cogl journal so that it can reduce the number of state changes and draw calls we issue to the OpenGL driver and hopfully improve performance. Previously each call to any of the cogl_rectangle* functions would imply an immediate GL draw call, as well as a corresponding modelview change; material state changes and gl{Vertex,Color,TexCoord}Pointer calls. Now though we have tried to open the scope for batching up as much as possible so we only have to flush the geometry either before calling glXSwapBuffers, or when we change state that isn't tracked by the journal. As a basic example, it's now possible for us to batch typical picking renders into a single draw call for the whole scene. Some key points about this change: - We now perform transformations of quads in software (except for long runs of text which continue to use VBOs) * It might seem surprising at first, but when you consider that so many Clutter actors are little more than textured quads and each actor typically implies a modelview matrix change; the costs involved in setting up the GPU with the new modelview can easily out weigh the cost of simply transforming 4 vertices. - We always use Cogl's own client side matrix API now. * We found the performance of querying the OpenGL driver for matrix state was often worse than using the client matrix code, and also - discussing with Mesa developers - agreed that since khronos has essentially deprecated the GL matrix API (by removing it from OpenGL 3 and OpenGL-ES 2) it was appropriate to take full responsibility for all our matrix manipulation. - Developers should avoid modifying materials mid-scene. * With the exception of material color changes, if you try and modify a material that is referenced in the journal we will currently force a journal flush. Note: you can assume that re-setting the same value for a material property won't require a flush though. - Several new --cogl-debug options have been added * "disable-batching" can be used to identify bugs in the way that the journal does its batching; of could this shouldn't ever be needed :-) * "disable-vbos" can be used to test the VBO fallback paths where we simply use malloc()'d buffers instead. * "batching" lets you get an overview of how the journal is batching your geometry and may help you identify ways to improve your application performance. * "journal" lets you trace all the geometry as it gets logged in the journal, and all the geometry as its flushed from the journal. Obviously an inconsistency can identify a bug, but the numbers may help you verify application logic too. * "disable-software-transform" as implied will instead use the driver /GPU to transform quads by the modelview matrix. Although committed separately a --clutter-debug=nop-picking option was also added that lets you remove picking from the equation, which can sometimes help make problem analysis more deterministic. commit b4bc9eb458f6cad450c0c7b8dc726ff275c7e21d Author: Robert Bragg Date: Mon Jun 29 22:32:05 2009 +0100 [cogl] Improve ability to break out into raw OpenGL via begin/end mechanism Although we wouldn't recommend developers try and interleve OpenGL drawing with Cogl drawing - we would prefer patches that improve Cogl to avoid this if possible - we are providing a simple mechanism that will at least give developers a fighting chance if they find it necissary. Note: we aren't helping developers change OpenGL state to modify the behaviour of Cogl drawing functions - it's unlikley that can ever be reliably supported - but if they are trying to do something like: - setup some OpenGL state. - draw using OpenGL (e.g. glDrawArrays() ) - reset modified OpenGL state. - continue using Cogl to draw They should surround their blocks of raw OpenGL with cogl_begin_gl() and cogl_end_gl(): cogl_begin_gl (); - setup some OpenGL state. - draw using OpenGL (e.g. glDrawArrays() ) - reset modified OpenGL state. cogl_end_gl (); - continue using Cogl to draw Again; we aren't supporting code like this: - setup some OpenGL state. - use Cogl to draw - reset modified OpenGL state. When the internals of Cogl evolves, this is very liable to break. cogl_begin_gl() will flush all internally batched Cogl primitives, and emit all internal Cogl state to OpenGL as if it were going to draw something itself. The result is that the OpenGL modelview matrix will be setup; the state corresponding to the current source material will be setup and other world state such as backface culling, depth and fogging enabledness will be also be sent to OpenGL. Note: no special material state is flushed, so if developers want Cogl to setup a simplified material state it is the their responsibility to set a simple source material before calling cogl_begin_gl. E.g. by calling cogl_set_source_color4ub(). Note: It is the developers responsibility to restore any OpenGL state that they modify to how it was after calling cogl_begin_gl() if they don't do this then the result of further Cogl calls is undefined. cogl.h.in | 79 ++++++++++++++++++++++++++++++++++ common/cogl.c | 75 ++++++++++++++++++++++++++++++++ doc/reference/cogl/cogl-sections.txt | 2 + gl/cogl-context.c | 2 + gl/cogl-context.h | 2 + 5 files changed, 160 insertions(+), 0 deletions(-) commit 99f53c392244d75fafe3e79051b038974e19b4c0 Author: Robert Bragg Date: Mon Jun 29 17:10:34 2009 +0100 Adds a cogl_flush() to give developers breaking into raw GL a fighting chance This function should only need to be called in exceptional circumstances since Cogl can normally determine internally when a flush is necessary. As an optimization Cogl drawing functions may batch up primitives internally, so if you are trying to use raw GL outside of Cogl you stand a better chance of being successful if you ask Cogl to flush any batched geometry before making your state changes. cogl_flush() ensures that the underlying driver is issued all the commands necessary to draw the batched primitives. It provides no guarantees about when the driver will complete the rendering. This provides no guarantees about the GL state upon returning and to avoid confusing Cogl you should aim to restore any changes you make before resuming use of Cogl. If you are making state changes with the intention of affecting Cogl drawing primitives you are 100% on your own since you stand a good chance of conflicting with Cogl internals. For example clutter-gst which currently uses direct GL calls to bind ARBfp programs will very likely break when Cogl starts to use ARBfb programs internally for the material API, but for now it can use cogl_flush() to at least ensure that the ARBfp program isn't applied to additional primitives. This does not provide a robust generalized solution supporting safe use of raw GL, its use is very much discouraged. cogl.h.in | 42 ++++++++++++++++++++++----------- common/cogl.c | 4 +- doc/reference/cogl/cogl-sections.txt | 3 ++ 3 files changed, 33 insertions(+), 16 deletions(-) commit cf621948a72cdac0f300d49dece427e2b720f1bb Author: Robert Bragg Date: Wed Jun 24 18:34:06 2009 +0100 [cogl-material] Be more carefull about flushing in cogl_material_remove_layer Previously we would call _cogl_material_pre_change_notify unconditionally, but now we wait until we really know we are removing a layer before notifying the change, which will require a journal flush. Since the convenience functions cogl_set_source_color4ub and cogl_set_source_texture share a single material, cogl_set_source_color4ub always calls cogl_material_remove_layer. Often this is a NOP though and shouldn't require a journal flush. This gets performance back to where it was before reverting the per-actor material commits. common/cogl-material.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-) commit 2ae3d4b1c13047f4d866111ac4d52c3ec2efd46f Author: Robert Bragg Date: Wed Jun 24 18:10:50 2009 +0100 [cogl-vertex-buffer] Disable unused client tex coord arrays Before any cogl vertex buffer drawing we call enable_state_for_drawing_buffer which sets up the GL state, but we weren't disabling unsed client texture coord arrays. common/cogl-vertex-buffer.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) commit 186a26eb266d564086b6867885b395fb6327fc50 Author: Robert Bragg Date: Mon Jun 22 01:29:39 2009 +0100 [cogl] disable all client tex coord arrays in _cogl_add_path_to_stencil_buffer After flushing the journal an unknown number of client side texture arrays may be left enabled. Disable them all before using glDrawArrays. gl/cogl-primitives.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) commit 4dada4c49ea7347ac5e236aae9a103e351339ec8 Author: Robert Bragg Date: Mon Jun 22 00:49:20 2009 +0100 [cogl] flush matrices in _cogl_add_path_to_stencil_buffer Before calling glRectf we need to ensure we flush the modelview and projection matrices. gl/cogl-primitives.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit a7974f8e6f56dcdec20741cb3b2a26c759142d9f Author: Robert Bragg Date: Mon Jun 22 00:11:41 2009 +0100 [journal] Don't resize a singlton VBO; create and destroy a VBO each flush This simplifies the vertex data uploading in the journal, and could improve performance. Modifying a VBO mid-scene could reqire synchronizing with the GPU or some form of shadowing/copying to avoid modifying data that the GPU is currently processing; the buffer was also being marked as GL_STATIC_DRAW which could have made things worse. Now we simply create a GL_STATIC_DRAW VBO for each flush and and delete it when we are finished. common/cogl-primitives.c | 40 ++++++++++++---------------------------- 1 files changed, 12 insertions(+), 28 deletions(-) commit 1ecfd72936eedda3c75257d47f6b73b2648bfd47 Author: Robert Bragg Date: Mon Jun 22 00:05:02 2009 +0100 [cogl] avoid using the journal in _cogl_add_path_to_stencil_buffer Using cogl_rectangle (and thus the journal) in _cogl_add_path_to_stencil_buffer means we have to consider all the state that the journal may change in case it may interfer with the direct GL calls used. This has proven to be error prone and in this case the journal is an unnecissary overhead. We now simply call glRectf instead of using cogl_rectangle. gl/cogl-primitives.c | 16 ++++++---------- 1 files changed, 6 insertions(+), 10 deletions(-) commit ac4f7f0bfe945f7bb04e2c3bd3d1d9d916ac44bb Author: Robert Bragg Date: Wed Jun 17 23:31:40 2009 +0100 [material] _cogl_material_equal: catch the simplest case of matching handles We were missing the simplest test of all: are the two CoglHandles equal and are the flush option flags for each material equal? This should improve batching for some common cases. common/cogl-material.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 3369c5138bd81a43ff24bd7533c67df0c774f5bd Author: Robert Bragg Date: Wed Jun 17 23:31:11 2009 +0100 [material] avoid flushing the journal when just changing the color Whenever we modify a material we call _cogl_material_pre_change_notify which checks to see if the material is referenced by the journal and if so flushes if before we modify the material. Since the journal logs material colors directly into a vertex array (to avoid us repeatedly calling glColor) then we know we never need to flush the journal when material colors change. common/cogl-material.c | 80 +++++++++++++++++++++++++++++++----------------- 1 files changed, 52 insertions(+), 28 deletions(-) commit f2f4f5f06f1051012bb643b822b29f7ec1bd28f6 Author: Robert Bragg Date: Wed Jun 17 01:31:36 2009 +0100 [cogl journal] Perform software modelview transform on logged quads. Since most Clutter actors aren't much more than textured quads; flushing the journal typically involves lots of 'change modelview; draw quad' sequences. The amount of overhead involved in uploading a new modelview and queuing that primitive is huge in comparison to simply transforming 4 vertices by the current modelview when logging quads. (Note if your GPU supports HW vertex transform, then it still does the projective and viewport transforms) At the same time a --cogl-debug=disable-software-transform option has been added for comparison and debugging. This change allows typical pick scenes to be batched into a single draw call and I'm seeing test-pick run over 200% faster with this. (i965 + Mesa 7.6-devel) cogl-debug.h | 3 +- common/cogl-debug.c | 3 +- common/cogl-primitives.c | 158 +++++++++++++++++++++++++++++++++------------ 3 files changed, 120 insertions(+), 44 deletions(-) commit 9d1bd46dafcc9fb266941254556349a71a572b12 Author: Robert Bragg Date: Wed Jun 17 01:30:24 2009 +0100 [Cogl journal] use G_UNLIKLEY around runtime debugging conditions May as well improve the branch prediction around runtime debugging code. common/cogl-primitives.c | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) commit 839c466d62a501da21b0f8d778efdf4319a5a275 Author: Robert Bragg Date: Thu Jun 11 11:54:01 2009 +0100 [cogl journal] Adds a --cogl-debug=batching option to trace batching Enabling this option makes Cogl trace how the journal is managing to batch your rectangles. The journal staggers how it emmits state to the GL driver and the batches will normally get smaller for each stage, but ideally you don't want to be in a situation where Cogl is only able to draw one quad per modelview change and draw call. E.g. this is a fairly ideal example: BATCHING: journal len = 101 BATCHING: vbo offset batch len = 101 BATCHING: material batch len = 101 BATCHING: modelview batch len = 101 This isn't: BATCHING: journal len = 1 BATCHING: vbo offset batch len = 1 BATCHING: material batch len = 1 BATCHING: modelview batch len = 1 BATCHING: journal len = 1 BATCHING: vbo offset batch len = 1 BATCHING: material batch len = 1 BATCHING: modelview batch len = 1 cogl-debug.h | 5 +++-- common/cogl-debug.c | 3 ++- common/cogl-primitives.c | 17 ++++++++++++----- 3 files changed, 17 insertions(+), 8 deletions(-) commit 121bcd6dfe9aa7126dfa5d88aa0cf5b5c61a456d Author: Robert Bragg Date: Wed Jun 17 01:59:28 2009 +0100 [Cogl journal] Adds a --cogl-debug=journal option for tracing the journal When this option is used Cogl will print a trace of all quads that get logged into the journal, and a trace of quads as they get flushed. If you are seeing a bug with the geometry being drawn by Cogl this may give some clues by letting you sanity check the numbers being logged vs the numbers being emitted. cogl-debug.h | 3 ++- common/cogl-debug.c | 3 ++- common/cogl-primitives.c | 36 +++++++++++++++++++++++------------- 3 files changed, 27 insertions(+), 15 deletions(-) commit 540a91c7fc32b631488255ae5d17562c74c0e05f Author: Robert Bragg Date: Wed Jun 17 01:46:06 2009 +0100 [cogl] Adds a debug option for disabling use of VBOs --cogl-debug=disable-vbos For testing the VBO fallback paths it helps to be able to disable the COGL_FEATURE_VBOS feature flag. When VBOs aren't available Cogl should use client side malloc()'d buffers instead. cogl-debug.h | 3 ++- common/cogl-debug.c | 3 ++- common/cogl.c | 3 +++ 3 files changed, 7 insertions(+), 2 deletions(-) commit 491ceaae07f57b4fcc579add6c43a495be7110ba Author: Robert Bragg Date: Wed Jun 17 01:37:39 2009 +0100 [cogl] Force Cogl to always use the client side matrix stack Previously we only used the Cogl matrix stack API for indirect contexts, but it's too costly to keep on requesting modelview matrices from GL (for logging in the journal) even for direct rendering. I also experimented with a patch for mesa to improve performance and discussed this with upstream, but we agreed to consider the GL matrix API essentially deprecated. (For reference the GLES 2 and GL 3 specs have removed the matrix APIs) common/cogl-current-matrix.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit f4516e4057f0b7f06e1cc6b26e6de7e846644678 Author: Robert Bragg Date: Fri Jun 5 13:50:00 2009 +0100 [cogl-debug] Adds a "client-side-matrices" Cogl debug option This allows us to force Cogl to use the client side matrix stack even when direct rendering. cogl-debug.h | 3 ++- common/cogl-current-matrix.c | 3 ++- common/cogl-debug.c | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) commit 7b85da8b287ebb6b324848ee8136dc2f66f9759f Author: Robert Bragg Date: Fri Jun 5 12:58:31 2009 +0100 [cogl-color] Adds a cogl_color_equal() function CoglColors shouldn't be compared using memcmp since they may contain uninitialized padding bytes. The prototype is also suitable for passing to g_hash_table_new as the key_equal_func. _cogl_pango_display_list_add_texture now uses this instead of memcmp. cogl-color.h | 16 ++++++++++++++++ common/cogl-color.c | 15 +++++++++++++++ 2 files changed, 31 insertions(+), 0 deletions(-) commit 827798233a5afae073893d14a1ba72935d4fca09 Author: Robert Bragg Date: Thu Jun 4 14:23:16 2009 +0100 [cogl material] optimize logging of material colors in the journal We now put the color of materials into the vertex array used by the journal instead of calling glColor() but the number of requests for the material color were quite expensive so we have changed the material color to internally be byte components instead of floats to avoid repeat conversions and added _cogl_material_get_colorubv as a fast-path for the journal to copy data into the vertex array. common/cogl-material-private.h | 21 ++++----------- common/cogl-material.c | 51 +++++++++++++++++++++++---------------- common/cogl-primitives.c | 26 ++++++++----------- gles/cogl-gles2-wrapper.c | 7 +++++ gles/cogl-gles2-wrapper.h | 2 + 5 files changed, 56 insertions(+), 51 deletions(-) commit 2f367cc8021b3b55b74c0667132c89fddf298803 Author: Robert Bragg Date: Wed Jun 10 13:59:45 2009 +0100 [journal] Always pad our vertex data as if at least 2 layers are enabled The number of material layers enabled when logging a quad in the journal determines the stride of the corresponding vertex data (since we need a set of texture coordinates for each layer.) By padding data in the case where we have only one layer we can avoid a change in stride if we are mixing single and double layer primitives in a scene (e.g. relevent for a composite manager that may use 2 layers for all shaped windows) Avoiding stride changes means we can minimize calls to gl{Vertex,Color}Pointer when flushing the journal. Since we need to update the texcoord pointers when the actual number of layers changes, this adds another batch_and_call() stage to deal with glTexCoordPointer and enabling/disabling the client arrays. common/cogl-primitives.c | 108 +++++++++++++++++++++++++++++++++------------- 1 files changed, 78 insertions(+), 30 deletions(-) commit 2b9478a665c5ababf6602461bdc1ec4c7e4f1625 Author: Robert Bragg Date: Wed Jun 17 18:46:42 2009 +0100 [cogl] Improving Cogl journal to minimize driver overheads + GPU state changes Previously the journal was always flushed at the end of _cogl_rectangles_with_multitexture_coords, (i.e. the end of any cogl_rectangle* calls) but now we have broadened the potential for batching geometry. In ideal circumstances we will only flush once per scene. In summary the journal works like this: When you use any of the cogl_rectangle* APIs then nothing is emitted to the GPU at this point, we just log one or more quads into the journal. A journal entry consists of the quad coordinates, an associated material reference, and a modelview matrix. Ideally the journal only gets flushed once at the end of a scene, but in fact there are things to consider that may cause unwanted flushing, including: - modifying materials mid-scene This is because each quad in the journal has an associated material reference (i.e. not copy), so if you try and modify a material that is already referenced in the journal we force a flush first) NOTE: For now this means you should avoid using cogl_set_source_color() since that currently uses a single shared material. Later we should change it to use a pool of materials that is recycled when the journal is flushed. - modifying any state that isn't currently logged, such as depth, fog and backface culling enables. The first thing that happens when flushing, is to upload all the vertex data associated with the journal into a single VBO. We then go through a process of splitting up the journal into batches that have compatible state so they can be emitted to the GPU together. This is currently broken up into 3 levels so we can stagger the state changes: 1) we break the journal up according to changes in the number of material layers associated with logged quads. The number of layers in a material determines the stride of the associated vertices, so we have to update our vertex array offsets at this level. (i.e. calling gl{Vertex,Color},Pointer etc) 2) we further split batches up according to material compatability. (e.g. materials with different textures) We flush material state at this level. 3) Finally we split batches up according to modelview changes. At this level we update the modelview matrix and actually emit the actual draw command. This commit is largely about putting the initial design in-place; this will be followed by other changes that take advantage of the extended batching. cogl-debug.h | 21 +- cogl-material.h | 19 +- cogl.h.in | 14 + common/cogl-clip-stack.c | 4 + common/cogl-debug.c | 3 +- common/cogl-material-private.h | 99 +++++-- common/cogl-material.c | 318 +++++++++++++++++-- common/cogl-primitives.c | 667 +++++++++++++++++++++++++++++----------- common/cogl-primitives.h | 2 + common/cogl-vertex-buffer.c | 28 +- common/cogl.c | 38 +++- gl/cogl-context.c | 4 + gl/cogl-context.h | 4 + gl/cogl-fbo.c | 2 + gl/cogl-primitives.c | 44 ++- gl/cogl-program.c | 5 + gl/cogl-texture-private.h | 12 +- gl/cogl-texture.c | 3 +- 18 files changed, 992 insertions(+), 295 deletions(-) commit 096c1df0f466585af8793aed03770663aa22f730 Author: Robert Bragg Date: Mon Jun 22 00:58:32 2009 +0100 [clip-stack] Use signed integers while combining window space clip rectangles Use signed integers while combining window space clip rectangles, so we avoid arithmatic errors later resulting in glScissor getting negative width and height arguments. common/cogl-clip-stack.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) commit 21d02307eb732474a4338f85972c3a79820d971c Author: Robert Bragg Date: Mon Jun 22 00:00:04 2009 +0100 [cogl] Remove unused ctx->polygon_vertices array This array used to be used by cogl_polygon but was changed to use ctx->logged_vertices some time ago. gl/cogl-context.c | 4 ---- gl/cogl-context.h | 1 - 2 files changed, 0 insertions(+), 5 deletions(-) commit 238e59060647620f264313cf6397fd53eccdedd2 Author: Robert Bragg Date: Tue Jun 23 15:24:42 2009 +0100 [cogl] Give the default (fallback) texture a format of RGBA_8888_PRE Previously this was RGBA_8888. It souldn't really make a difference but for consistency we expect almost all textures in use to have an internaly premultiplied pixel format. gl/cogl-context.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit f5a8e693c81e85ba4d68d7d081ed0f4920af3662 Author: Robert Bragg Date: Fri Jun 19 16:39:37 2009 +0100 [cogl-texture] use the right format when downloading sliced textures from GL _cogl_texture_download_from_gl needs to create transient CoglBitmaps when downloading sliced textures from GL, and then copies these as subregions into the final target_bitmap. _cogl_texture_download_from_gl also supports target_bitmaps with a different format to the source CoglTexture being downloaded. The problem was that in the case of slice textures we were always looking at the format of the CoglTexture, not of the target_bitmap when setting up the transient slice bitmap. gl/cogl-texture.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 606fb8f56ffa3be522d1a3e1709c2f1986740f2e Author: Robert Bragg Date: Wed Jun 17 14:30:44 2009 +0100 [cogl] Adds cogl_read_pixels to replace direct use of glReadPixels To allow for flushing of batched geometry within Cogl we can't support users directly calling glReadPixels. glReadPixels is also awkward, not least because it returns upside down image data. All the unit tests have been swithed over and clutter_stage_read_pixels now sits on top of this too. cogl.h.in | 33 ++++++++++++++++++++ common/cogl.c | 56 ++++++++++++++++++++++++++++++++++ doc/reference/cogl/cogl-sections.txt | 4 ++ 3 files changed, 93 insertions(+), 0 deletions(-) commit 3d79cfaba1a09c0e0ce3e1933478977af77da8f2 Author: Robert Bragg Date: Wed Jun 17 02:08:31 2009 +0100 [cogl matrix] Adds ability to dirty state cached by the client matrix apis To be able to load matrices to GL manually within Cogl we need a way to dirty the state cached by the client matrix stack API. common/cogl-current-matrix.c | 15 +++++++++++++++ common/cogl-current-matrix.h | 1 + common/cogl-matrix-stack.c | 7 +++++++ common/cogl-matrix-stack.h | 1 + 4 files changed, 24 insertions(+), 0 deletions(-) commit 46866f8e94cc3adc9677579bd03b43f1826100a7 Author: Robert Bragg Date: Tue Jun 16 22:48:21 2009 +0100 [cogl_polygon] fixes a buffer overrun and color format bug We were calculating our vertex stride and allocating our vertex array differently depending on whether the user passed TRUE for use_color or not. The problem was that we were always writting color data to the array regardless of use_color. There was also a bug with _cogl_texture_sliced_polygon in that it was writing byte color components but we were expecting float components. We now use byte components in _cogl_multitexture_unsliced_polygon too and pass GL_UNSIGNED_BYTE to glColorPointer. common/cogl-primitives.c | 40 +++++++++++++++++++++++----------------- 1 files changed, 23 insertions(+), 17 deletions(-) commit 14d1c4a7672fa0c8ebc58e87ba991051da25e13c Author: Robert Bragg Date: Wed Jun 17 15:03:33 2009 +0100 [vertex-buffer] Add cogl_vertex_buffer_indices_get_type API cogl_vertex_buffer_indices lets you query back the data type used for the given indices handle. cogl-vertex-buffer.h | 11 +++++++++++ common/cogl-vertex-buffer.c | 21 +++++++++++++++++++++ 2 files changed, 32 insertions(+), 0 deletions(-) commit 8aa80eb55fdfbcfdb85b9e56bebd183123f98871 Author: Robert Bragg Date: Wed Jun 17 15:02:56 2009 +0100 [vertex-buffer] Remove the COGL_INDICES_TYPE_UNSIGNED_INT indicies type Since some embedded GPUs may not support 32bit integer indices we wont include it until there is a particular need. cogl-vertex-buffer.h | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) commit efc5c4f0e56bc24df611fd6a9a899415979eff96 Author: Damien Lespiau Date: Thu Jun 25 16:06:41 2009 +0200 [cogl] Add COGL_HAS_GL and COGL_HAS_GLES Cogl already add similar defines but with the CLUTTER namespace (CLUTTER_COGL_HAS_GL and CLUTTER_COGL_HAS_GLES). Let's just add two similar defines with the COGL namespace. Removing the CLUTTER_COGL ones could break applications silently for no real good reason. gl/cogl-defines.h.in | 1 + gles/cogl-defines.h.in | 1 + 2 files changed, 2 insertions(+), 0 deletions(-) commit 5d437281ec0411d513e94ff3417d2c9a2d853559 Author: Damien Lespiau Date: Mon Jun 15 14:15:27 2009 +0100 Public headers should not have #ifdefs relying on private defines HAVE_COGL_GLES2 is defined in config.h through the configure script and should not be used in public headers. The patch makes configure generate the right define that can be used later in the header. gles/cogl-defines.h.in | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) commit c60a974ec0365e96540bb342de0970d655f6cd18 Author: Colin Walters Date: Tue Jun 16 10:34:13 2009 -0400 Plug minor memory leak in cogl_vertex_buffer_submit_real Free a temporary list. common/cogl-vertex-buffer.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 67014764c9be1cdd393116292611b5835f45fb0d Author: Emmanuele Bassi Date: Mon Jun 15 10:48:56 2009 +0100 Disable single header inclusion for GLib In order to be ready for the next major version of GLib we need to disable single header inclusion by using the G_DISABLE_SINGLE_INCLUDES define in the build process. common/Makefile.am | 1 + gl/Makefile.am | 1 + gles/Makefile.am | 1 + 3 files changed, 3 insertions(+), 0 deletions(-) commit 101b88192d21c17fe7a72349881e400705216a29 Author: Robert Bragg Date: Mon Jun 8 17:43:34 2009 +0100 [_cogl_texture_bitmap_prepare] use bitmap format for FORMAT_ANY + no alpha My patch to choose a premultiplied format when the user gives COGL_PIXEL_FORMAT_ANY for the internal_format broke the case where the data in question doesn't have and alpha channel. This was accidentally missed when merging the premultiplication branch since I merged a local version of the branch that missed this commit. gl/cogl-texture.c | 2 ++ gles/cogl-texture.c | 2 ++ 2 files changed, 4 insertions(+), 0 deletions(-) commit 14cef5748015d5e6010a4bb45c549d56029ecda6 Author: Robert Bragg Date: Mon Jun 8 12:18:34 2009 +0100 [cogl] Don't allow calling cogl_set_source_texture with an INVALID_HANDLE Although the underlying materials should allow layers with INVALID_HANDLES it shouldn't be necissary to expose that via cogl_set_source_texture() and it's easier to resolve a warning/crash here than odd artefacts/crashes later in the pipeline. common/cogl-material.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit c52eda67158747229026c12614e322815bf763ed Merge: bc0cd14 9d7a93f Author: Robert Bragg Date: Thu Jun 11 15:16:27 2009 +0100 Bug 1406 - Handling of premultiplication in clutter Merge branch 'premultiplication' [cogl-texture docs] Improves the documentation of the internal_format args [test-premult] Adds a unit test for texture upload premultiplication semantics [fog] Document that fogging only works with opaque or unmultipled colors [test-blend-strings] Explicitly request RGBA_888 tex format for test textures [premultiplication] Be more conservative with what data gets premultiplied [bitmap] Fixes _cogl_bitmap_fallback_unpremult [cogl-bitmap] Fix minor copy and paste error in _cogl_bitmap_fallback_premult Avoid unnecesary unpremultiplication when saving to local data Don't unpremultiply Cairo data Default to a blend function that expects premultiplied colors Implement premultiplication for CoglBitmap Use correct texture format for pixmap textures and FBO's Add cogl_color_premultiply() commit 9d7a93f641144f928e404c8feda6adf51ddba519 Author: Robert Bragg Date: Thu Jun 11 14:31:01 2009 +0100 [cogl-texture docs] Improves the documentation of the internal_format args Clarifies that if you give COGL_PIXEL_FORMAT_ANY as the internal format for cogl_texture_new_from_file or cogl_texture_new_from_data then Cogl will choose a premultiplied internal format. cogl-texture.h | 16 ++++++++++++++-- 1 files changed, 14 insertions(+), 2 deletions(-) commit 58fa6917c266d24eb84d008191b230054ee5e63c Author: Robert Bragg Date: Sun Jun 7 11:54:05 2009 +0100 [fog] Document that fogging only works with opaque or unmultipled colors The fixed function fogging provided by OpenGL only works with unmultiplied colors (or if the color has an alpha of 1.0) so since we now premultiply textures and colors by default a note to this affect has been added to clutter_stage_set_fog and cogl_set_fog. test-depth.c no longer uses clutter_stage_set_fog for this reason. In the future when we can depend on fragment shaders we should also be able to support fogging of premultiplied primitives. cogl.h.in | 23 ++++++++++++++++------- 1 files changed, 16 insertions(+), 7 deletions(-) commit e6da6df8a8d7d5e0ccf88b71dd2a0ad764b0bf6a Author: Robert Bragg Date: Sat Jun 6 21:45:05 2009 +0100 [premultiplication] Be more conservative with what data gets premultiplied We don't want to force texture data to be premultipled if the user explicitly specifies a non premultiplied internal_format such as COGL_PIXEL_FORMAT_RGBA_8888. So now Cogl will only automatically premultiply data when COGL_PIXEL_FORMAT_ANY is given for the internal_format, or a premultiplied internal format such as COGL_PIXEL_FORMAT_RGBA_8888_PRE is requested but non-premultiplied source data is given. This approach is consistent with OpenVG image formats which have already influenced Cogl's pixel format semantics. gl/cogl-texture.c | 24 +++++++++++------------- gles/cogl-texture.c | 24 +++++++++++------------- 2 files changed, 22 insertions(+), 26 deletions(-) commit 7cb4b934321285f9f46ba72aefc0feda32123f03 Author: Robert Bragg Date: Sun Jun 7 15:58:56 2009 +0100 [bitmap] Fixes _cogl_bitmap_fallback_unpremult The _cogl_unpremult_alpha_{first,last} functions which _cogl_bitmap_fallback_unpremult depends on were incorrectly casting each of the byte components of a texel to a gulong and performing shifts as if it were dealing with the whole texel. It now just uses array indexing to access the byte components without needing to cast or manually shift any bits around. Even though we used to depend on unpremult whenever we used a ClutterCairoTexture, clutter_cairo_texture_context_destroy had it's own unpremult code which worked which is why this bug wouldn't have been noticed before. common/cogl-bitmap-fallback.c | 60 ++++++++++++++++++++-------------------- 1 files changed, 30 insertions(+), 30 deletions(-) commit dde3257b6c032dbcc0711fcb59900aa226bd0425 Author: Robert Bragg Date: Sun Jun 7 20:29:13 2009 +0100 [cogl-bitmap] Fix minor copy and paste error in _cogl_bitmap_fallback_premult The returned bitmap format should include the COGL_PREMULT_BIT flag not have it explicitly removed as for _cogl_bitmap_fallback_unpremult. common/cogl-bitmap-fallback.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit f0de41331a19bf9da1b6e7f27388d4f062fec8d2 Author: Owen W. Taylor Date: Sat May 9 14:39:01 2009 -0400 Default to a blend function that expects premultiplied colors Many operations, like mixing two textures together or alpha-blending onto a destination with alpha, are done most logically if texture data is in premultiplied form. We also have many sources of premultiplied texture data, like X pixmaps, FBOs, cairo surfaces. Rather than trying to work with two different types of texture data, simplify things by always premultiplying texture data before uploading to GL. Because the default blend function is changed to accommodate this, uses of pure-color CoglMaterial need to be adapted to add premultiplication. gl/cogl-texture.c gles/cogl-texture.c: Always premultiply non-premultiplied texture data before uploading to GL. cogl-material.c cogl-material.h: Switch the default blend functions to ONE, ONE_MINUS_SRC_ALPHA so they work correctly with premultiplied data. cogl.c: Make cogl_set_source_color() premultiply the color. cogl.h.in color-material.h: Add some documentation about premultiplication and its interaction with color values. cogl-pango-render.c clutter-texture.c tests/interactive/test-cogl-offscreen.c: Use premultiplied colors. http://bugzilla.openedhand.com/show_bug.cgi?id=1406 Signed-off-by: Robert Bragg cogl-material.h | 10 ++++++++++ cogl.h.in | 9 +++++++-- common/cogl-material.c | 2 +- common/cogl.c | 7 ++++++- gl/cogl-texture.c | 22 ++++++++++++---------- gles/cogl-texture.c | 23 +++++++++++++---------- 6 files changed, 49 insertions(+), 24 deletions(-) commit b0887a0d7593fdcacb2d5ac626fcc074cc4f722a Author: Owen W. Taylor Date: Sat May 9 14:39:01 2009 -0400 Implement premultiplication for CoglBitmap cogl-bitmap.c cogl-bitmap-pixbuf.c cogl-bitmap-fallback.c cogl-bitmap-private.h: Add _cogl_bitmap_can_premult(), _cogl_bitmap_premult() and implement a reasonably fast implementation in the "fallback" code. http://bugzilla.openedhand.com/show_bug.cgi?id=1406 Signed-off-by: Robert Bragg common/cogl-bitmap-fallback.c | 93 +++++++++++++++++++++++++++++++++++++++++ common/cogl-bitmap-pixbuf.c | 13 ++++++ common/cogl-bitmap-private.h | 14 ++++++ common/cogl-bitmap.c | 26 +++++++++--- 4 files changed, 140 insertions(+), 6 deletions(-) commit dcc4f1416995f9d16363e77b71d851e25bf53dab Author: Owen W. Taylor Date: Sat May 9 14:39:01 2009 -0400 Add cogl_color_premultiply() Add a convenience function to convert an ARGB color from non-premultiplied to premultiplied form. http://bugzilla.openedhand.com/show_bug.cgi?id=1406 Signed-off-by: Robert Bragg cogl-color.h | 12 ++++++++++++ common/cogl-color.c | 8 ++++++++ 2 files changed, 20 insertions(+), 0 deletions(-) commit bc0cd145e53fdb951134816c18a2dc32e5c48962 Merge: e0adc98 fd9d87b Author: Emmanuele Bassi Date: Thu Jun 11 13:01:34 2009 +0100 Bug 1637 - Master clock improvements Merge branch 'master-clock-updates' * master-clock-updates: (22 commits) Change the paint forcing on the Text cache text [timelines] Improve marker hit check and don't fudge the delta Revert "[timeline] Don't clamp the elapsed time when a looping tl reaches the end" [tests] Don't add a newline to the end of g_test_message calls [test-timeline] Add a marker at the beginning of the timeline [timeline] Don't clamp the elapsed time when a looping tl reaches the end [master-clock] Throttle if no redraw was performed [docs] Update Clutter's API reference Force a paint instead of calling clutter_redraw() Fix clutter_redraw() to match the redraw cycle Run the repaint functions inside the redraw cycle Remove useless manual timeline ticking Move elapsed-time calculations into ClutterTimeline Limit the frame rate when not syncing to VBLANK Decrease the main-loop priority of the frame cycle Avoid motion-compression in test-picking test Compress events as part of the frame cycle Remove stage update idle and do updates from the master clock Call g_main_context_wakeup() when we start running timelines Remove unused msecs_delta member ... commit e0adc985adda9ab8720d68f6da8101efdb655dae Author: Emmanuele Bassi Date: Wed Jun 10 12:50:45 2009 +0100 [docs] Various gtk-doc fixes for COGL Try to keep the gtk-doc errors down to a minimum. cogl-bitmap.h | 8 ++- cogl-material.h | 24 ++++++---- cogl-matrix.h | 32 +++++++------ cogl-offscreen.h | 4 +- cogl-vertex-buffer.h | 9 +++- cogl.h.in | 6 +- doc/reference/cogl/Makefile.am | 2 - doc/reference/cogl/cogl-sections.txt | 83 +++++++++++++++++++++++++++++++-- 8 files changed, 126 insertions(+), 42 deletions(-) commit fd9d87bc3adff3de9b08fc9d14b99268aef3060f Author: Emmanuele Bassi Date: Tue Jun 9 12:40:06 2009 +0100 [introspection] Add --c-include to g-ir-scanner Since Clutter has a single-include header policy we need to put the header to be included inside the GIR file. Makefile.am | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit e521638f910314e5a31fe755c38bf7bf07a79980 Author: Neil Roberts Date: Tue Jun 9 11:13:11 2009 +0100 [CoglTexture] Initialise tex->first_pixels to NULL in all constructors Otherwise if there is an error before the slices are created it will try to free the first_pixels array and crash. It now also checks whether first_pixels has been created before using it to update the mipmaps. This should only happen for cogl_texture_new_from_foreign and doesn't matter if the FBO extension is available. It would be better in this case to fetch the first pixel using glGetTexImage as Owen mentioned in the last commit. gl/cogl-texture.c | 6 +++++- gles/cogl-texture.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) commit ae07dea93d3f3fb0559bbe0f71183a9cc95d7f75 Author: Owen W. Taylor Date: Mon Jun 8 16:45:43 2009 -0400 Fix unitialized first_pixels for foreign textures tex->first_pixels was never set for foreign textures, leading to a crash when the texture object is freed. As a quick fix, simply set to NULL. A more complete fix would require remembering if we had ever seen the first pixel uploaded, and if not, doing a glReadPixel to get it before triggering the mipmap update. http://bugzilla.openedhand.com/show_bug.cgi?id=1645 Signed-off-by: Neil Roberts gl/cogl-texture.c | 2 ++ gles/cogl-texture.c | 2 ++ 2 files changed, 4 insertions(+), 0 deletions(-) commit a5b56910821436848216aff6b03749a88bdae52a Author: Owen W. Taylor Date: Mon Jun 8 09:26:57 2009 -0400 On bad blend strings, print the error if not returning it It's very common that there's no reasonable fallback to do if the blend or combine string you set isn't supported. So, rather than requiring everybody to pass in a GError purely to catch syntax erorrs, automatically g_warning() if a parse error is encountered and @error is NULL. http://bugzilla.openedhand.com/show_bug.cgi?id=1642 Signed-off-by: Robert Bragg cogl-material.h | 5 ++++- common/cogl-material.c | 30 ++++++++++++++++++++++++++---- 2 files changed, 30 insertions(+), 5 deletions(-) commit 8a31263274a87ba4169c9e8ad266285884778cbf Author: Johan Bilien Date: Wed Jun 3 22:08:17 2009 +0100 Fix the leak of the GList of layers in CoglMaterial http://bugzilla.openedhand.com/show_bug.cgi?id=1624 Signed-off-by: Emmanuele Bassi common/cogl-material.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit fdb66d1076a1256ebd2bb8cfd491610ee30e8b23 Author: Robert Bragg Date: Sat Apr 4 19:21:22 2009 +0100 [cogl] cogl_material_set_layer does nothing if resetting the same texture This avoids dirtying the layer, and should avoid some uneeded state changes common/cogl-material.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 6989ce1434edc24c16eb0623e1fa081c9652d9fd Author: Emmanuele Bassi Date: Fri Jun 5 16:46:12 2009 +0100 [build] Fix compiler warnings Silence GCC common/cogl-blend-string.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 133fc2e3571378859fffc100b28b33876baf1513 Author: Emmanuele Bassi Date: Fri Jun 5 15:18:43 2009 +0100 Fix a compiler warning common/cogl-vertex-buffer.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 805fb0620a71045c3289209e7b0d83411d60353c Merge: b184bd0 bb5a99a Author: Emmanuele Bassi Date: Fri Jun 5 12:41:42 2009 +0100 Merge branch '1.0-integration' * 1.0-integration: (138 commits) [x11] Disable XInput by default [xinput] Invert the XI extension version check [cogl-primitives] Fix an unused variable warning when building GLES [clutter-stage-egl] Pass -1,-1 to clutter_stage_x11_fix_window_size Update the GLES backend to have the layer filters in the material [gles/cogl-shader] Add a missing semicolon [cogl] Move the texture filters to be a property of the material layer [text] Fix Pango unit to pixels conversion [actor] Force unrealization on destroy only for non-toplevels [x11] Rework map/unmap and resizing [xinput] Check for the XInput entry points [units] Validate units against the ParamSpec [actor] Add the ::allocation-changed signal [actor] Use flags to control allocations [units] Rework Units into logical distance value Remove a stray g_value_get_int() Remove usage of Units and macros [cogl-material] Allow setting a layer with an invalid texture handle [timeline] Remove the concept of frames from timelines [gles/cogl-shader] Fix parameter spec for cogl_shader_get_info_log ... Conflicts: configure.ac commit bb5a99a3cef248cf76bc243d6840cf99adbe41f4 Merge: b177d24 8909d6a Author: Neil Roberts Date: Fri Jun 5 12:20:41 2009 +0100 Merge branch 'timeline-no-fps' into 1.0-integration commit b177d24667a7be2f1a54297b8e7641ca58ff0321 Author: Neil Roberts Date: Thu Jun 4 22:20:18 2009 +0100 [cogl-primitives] Fix an unused variable warning when building GLES The 'tex' variable is only used if #ifdef'd GL code so it was throwing an error under GLES. The variable is now moved into a block inside the #ifdef. common/cogl-primitives.c | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-) commit f259deafce304b846313305f6fa8cdb235d5a4cc Author: Neil Roberts Date: Thu Jun 4 22:12:33 2009 +0100 Update the GLES backend to have the layer filters in the material This reflects the changes made in 54d8aadf1d86 for the GLES backend. gles/cogl-texture-private.h | 31 +++++++- gles/cogl-texture.c | 182 ++++++++++++++++++++++++++---------------- 2 files changed, 142 insertions(+), 71 deletions(-) commit c2759846dd79eb7b8380476963b8f74ae0e3bf89 Author: Neil Roberts Date: Thu Jun 4 22:10:33 2009 +0100 [gles/cogl-shader] Add a missing semicolon cogl_shader_get_info_log was missing a semicolon which broke the build on GLES 2. gles/cogl-shader.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit e7e897802925346fdd3e212c425acbf2017027c2 Author: Neil Roberts Date: Thu Jun 4 16:04:57 2009 +0100 [cogl] Move the texture filters to be a property of the material layer The texture filters are now a property of the material layer rather than the texture object. Whenever a texture is painted with a material it sets the filters on all of the GL textures in the Cogl texture. The filter is cached so that it won't be changed unnecessarily. The automatic mipmap generation has changed so that the mipmaps are only generated when the texture is painted instead of every time the data changes. Changing the texture sets a flag to mark that the mipmaps are dirty. This works better if the FBO extension is available because we can use glGenerateMipmap. If the extension is not available it will temporarily enable automatic mipmap generation and reupload the first pixel of each slice. This requires tracking the data for the first pixel. The COGL_TEXTURE_AUTO_MIPMAP flag has been replaced with COGL_TEXTURE_NO_AUTO_MIPMAP so that it will default to auto-mipmapping. The mipmap generation is now effectively free if you are not using a mipmap filter mode so you would only want to disable it if you had some special reason to generate your own mipmaps. ClutterTexture no longer has to store its own copy of the filter mode. Instead it stores it in the material and the property is directly set and read from that. This fixes problems with the filters getting out of sync when a cogl handle is set on the texture directly. It also avoids the mess of having to rerealize the texture if the filter quality changes to HIGH because Cogl will take of generating the mipmaps if needed. cogl-material.h | 80 +++++++++++++++ cogl-texture.h | 80 --------------- cogl-types.h | 13 ++- common/cogl-material-private.h | 3 + common/cogl-material.c | 59 +++++++++++ common/cogl-primitives.c | 3 +- doc/reference/cogl/cogl-sections.txt | 7 +- gl/cogl-context.h | 1 + gl/cogl-defines.h.in | 4 + gl/cogl-texture-private.h | 31 ++++++- gl/cogl-texture.c | 179 ++++++++++++++++++++++------------ gl/cogl.c | 7 +- 12 files changed, 313 insertions(+), 154 deletions(-) commit b7c8f8111e86be48eb440358d13e677ccc29cf19 Author: Neil Roberts Date: Wed Jun 3 15:22:42 2009 +0100 [cogl-material] Allow setting a layer with an invalid texture handle It was previously possible to create a material layer with no texture by setting some property on it such as the matrix. However it was not possible to get back to that state without removing the layer and recreating it. It is useful to be able to remove the texture to free resources without forgetting the state of the layer so we can put a different texture in later. common/cogl-material.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) commit 8909d6a1298fb756f98bd22a870ee4091bb6414a Author: Neil Roberts Date: Thu Jun 4 12:04:47 2009 +0100 [gles/cogl-shader] Fix parameter spec for cogl_shader_get_info_log The stub version of cogl_shader_get_info_log needed to be updated to match the changes to the function signature in 61deeafa. gles/cogl-shader.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-) commit 00ac53042e810d10fe34422d0bf8ec2d4831365b Author: Neil Roberts Date: Thu Jun 4 11:50:06 2009 +0100 Load glBlendEquation and glBlendColor using cogl_get_proc_address These are defined since OpenGL 1.2 and since Windows doesn't export any functions defined after 1.1 we need to load them dynamically. common/cogl-material.c | 2 ++ gl/cogl-context.h | 2 ++ gl/cogl-defines.h.in | 11 +++++++++++ gl/cogl.c | 7 +++++++ 4 files changed, 22 insertions(+), 0 deletions(-) commit db4fb91fe391d9da822c1427b8c364a416d80a80 Author: Neil Roberts Date: Thu Jun 4 11:48:51 2009 +0100 Rename 'near' and 'far' variables to 'z_near' and 'z_far' The Windows headers define near and far to be empty so it breaks the build. cogl-matrix.h | 12 ++++++------ common/cogl-current-matrix.c | 18 +++++++++--------- 2 files changed, 15 insertions(+), 15 deletions(-) commit b184bd04e8d9609cba4a88e95b3a20187367d26d Author: Neil Roberts Date: Tue Jun 2 18:01:18 2009 +0100 [cogl-texture] Don't take ownership of the data in cogl_texture_new_from_bitmap When creating a Cogl texture from a Cogl bitmap it would steal the data by setting the bitmap_owner flag and clearing the data pointer from the bitmap. The data would be freed by the time the new_from_bitmap is finished. There is no reason to do this because the data will be freed when the Cogl bitmap is unref'd and it is confusing not to be able to reuse the bitmap for creating multiple textures. gl/cogl-texture.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit b900c314b704ef0f2597893cbe1cacfb7a61e294 Author: Emmanuele Bassi Date: Mon Jun 1 17:35:41 2009 +0100 [docs] Rework the API reference version generation Clutter copies the gtk-doc from the usual gtk+ template, and has a version.xml.in containing only: @VERSION@ Without a newline at the end. Unfortunately, it appears that autoconf has started adding a newline to the generated version.xml which then is used as the payload for the "version" XML entity. Instead of using a secondary file we can make configure generate the whole clutter-docs.xml and cogl-docs.xml files from a template; this way we also get the ability to substitute more autoconf variables into the documentation -- if needs be. doc/reference/cogl/Makefile.am | 2 - doc/reference/cogl/cogl-docs.xml | 107 ----------------------------------- doc/reference/cogl/cogl-docs.xml.in | 107 +++++++++++++++++++++++++++++++++++ doc/reference/cogl/version.xml.in | 1 - 4 files changed, 107 insertions(+), 110 deletions(-) commit c0c7565ffcdd3927279ddb69a84c46034de79fa9 Author: Emmanuele Bassi Date: Mon Jun 1 16:31:32 2009 +0100 [cogl-shader] Make get_info_log() slightly nicer The cogl_shader_get_info_log() function is very inconvenient for language bindings and for regular use, as it requires a static buffer to be filled -- basically just providing a wrapper around glGetInfoLogARB(). Since COGL aims to be a more convenient API than raw GL we should just make cogl_shader_get_info_log() return an allocated string with the GLSL compiler log. cogl-shader.h | 13 ++++++------- gl/cogl-shader.c | 15 ++++++++------- gles/cogl-shader.c | 15 ++++++++------- 3 files changed, 22 insertions(+), 21 deletions(-) commit 9d41a27f61d1298aaac0a15fc2fbbab8fbb8a15d Author: Neil Roberts Date: Mon Jun 1 17:10:22 2009 +0100 Use GL_QUADS for flushing a quad batch Instead of using GL_TRIANGLES and uploading the indices every time, it now uses GL_QUADS instead on OpenGL. Under GLES it still uses indices but it uses the new cogl_vertex_buffer_indices_get_for_quads function to avoid uploading the vertices every time. This requires the _cogl_vertex_buffer_indices_pointer_from_handle function to be exposed privately to the rest of Cogl. The static_indices array has been removed from the Cogl context. common/cogl-primitives.c | 79 +++++++++++------------------------ common/cogl-vertex-buffer-private.h | 4 ++ gl/cogl-context.c | 3 - gl/cogl-context.h | 1 - gles/cogl-context.c | 3 - gles/cogl-context.h | 1 - 6 files changed, 29 insertions(+), 62 deletions(-) commit 39cb36ba0110a65696cff9461caf52227762be34 Author: Neil Roberts Date: Thu May 28 13:47:18 2009 +0100 [cogl-vertex-buffer] Add cogl_vertex_buffer_indices_get_for_quads This function can be used as an efficient way of drawing groups of quads without using GL_QUADS. It generates a VBO containing the indices needed to render using pairs of GL_TRIANGLES. The VBO is globally cached so that it only needs to be uploaded whenever more indices are requested than ever before. cogl-vertex-buffer.h | 40 +++++++++++++++++ common/cogl-vertex-buffer.c | 80 ++++++++++++++++++++++++++++++++++ doc/reference/cogl/cogl-sections.txt | 1 + gl/cogl-context.c | 9 ++++ gl/cogl-context.h | 6 +++ gles/cogl-context.c | 9 ++++ gles/cogl-context.h | 7 +++- 7 files changed, 151 insertions(+), 1 deletions(-) commit 2f319ad839972a393569d53c87689bdc4a5f55b7 Author: Emmanuele Bassi Date: Fri May 29 17:50:58 2009 +0100 [build] Remove cogl-enum-types.h on distclean The cogl-enum-types.h file is created by glib-mkenums under /clutter/cogl/common, and then copied in /clutter/cogl in order to make the inclusion of that file work inside cogl.h. Since we're copying it in a different location, the Makefile for that location has to clean up the copy. Makefile.am | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 5888e45fd73b3f11de1d0a100cc6072ceb80c1df Author: Emmanuele Bassi Date: Fri May 29 17:10:27 2009 +0100 [build] Fix dist issues * cogl-deprecated.h is not being installed * cogl-enum-types.c.in is not part of the dist Makefile.am | 1 + common/Makefile.am | 2 +- 2 files changed, 2 insertions(+), 1 deletions(-) commit 93a9613b59324a8cb332036aa2b15fe98c311c63 Author: Emmanuele Bassi Date: Fri May 29 14:27:55 2009 +0100 [build] Copy cogl-enum-types.h under the guard We avoid rebuilding cogl-enum-types.h and cogl-enum-types.c by using a "guard" -- a stamp file that will block Makefile. Since we need cogl-enum-types.h into /clutter/cogl as well for the cogl.h include to work, if we copy the cogl-enum-types.h unconditionally it will cause a rebuild of the whole COGL; which will cause a full rebuild. To solve this, we can copy the header file when generating it under the stamp file. common/Makefile.am | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 1c8a6bc09b8fa877ff337fefa54c53db20599e2f Author: Emmanuele Bassi Date: Fri May 29 12:50:48 2009 +0100 [build] Encode the target into the backend library The libclutter-cogl internal object should be the only dependency for Clutter, since we are already copying it inside clutter/cogl for the introspection scanner. For this reason, the backend-specific, real internal object should be built with the backend encoded into the file name, like libclutter-common. This makes the build output a little bit more clear: instead of having two: LINK libclutter-cogl-common.la ... LINK libclutter-cogl.la LINK libclutter-cogl.la We'll have: LINK libclutter-cogl-common.la ... LINK libclutter-cogl-gl.la LINK libclutter-cogl.la Same applies for the GLES backend. Makefile.am | 4 ++-- gl/Makefile.am | 10 +++++----- gles/Makefile.am | 12 ++++++------ 3 files changed, 13 insertions(+), 13 deletions(-) commit 99b2f14d6014c8b855ea85185b8026af079ae690 Author: Emmanuele Bassi Date: Fri May 29 12:40:23 2009 +0100 Use g_once when registering enumeration types Just like we do with GObject types and G_DEFINE_TYPE, we should use the g_once_init_enter/g_once_init_leave mechanism to make the GType registration of enumeration types thread safe. common/cogl-enum-types.c.in | 18 +++++++++++++----- 1 files changed, 13 insertions(+), 5 deletions(-) commit 34b5352bb5e8d728e89923a7059da90715214b63 Author: Emmanuele Bassi Date: Fri May 29 12:31:47 2009 +0100 [cogl] Generate enumeration GTypes COGL is starting to have more enumerations than I can handle by hand. Let's use glib-mkenums and be done with it. Makefile.am | 40 +++++++---- cogl-shader.h | 5 +- cogl-types.h | 83 ++++------------------- cogl.h.in | 11 ++-- common/Makefile.am | 53 ++++++++++++++- common/cogl-enum-types.c.in | 33 +++++++++ common/cogl-enum-types.h.in | 25 +++++++ common/cogl-util.c | 154 ------------------------------------------- gl/Makefile.am | 5 -- 9 files changed, 158 insertions(+), 251 deletions(-) commit ae9b871b38dd1c581c4ed7e1629d06697d7b25b1 Author: Emmanuele Bassi Date: Thu May 28 17:18:13 2009 +0100 [docs] Fixes for the API reference * Add unused symbols * Document and sync argument names with their gtk-doc counterpart * Add missing descriptions cogl-material.h | 5 +++++ cogl-shader.h | 14 +++++++++++--- cogl-vertex-buffer.h | 33 +++++++++++++++++++++------------ cogl.h.in | 4 ++++ doc/reference/cogl/cogl-sections.txt | 6 ------ 5 files changed, 41 insertions(+), 21 deletions(-) commit a5eb2a9abad41f26a8882065c3771ac6066c48de Merge: 5ed1b03 c73d340 Author: Emmanuele Bassi Date: Thu May 28 15:53:56 2009 +0100 Merge branch 'master' into 1.0-integration * master: [test-text-perf] Use queue_redraw instead of painting the stage directly [actor] In paint when opacity == 0, clear the queued_redraw flag commit 5ed1b03a91f2a43f8f39bb7eb89608f7cf17c22c Author: Emmanuele Bassi Date: Thu May 28 13:03:19 2009 +0100 [cogl] Make cogl_setup_viewport() a private function The setup_viewport() function should only be used by Clutter and not by application code. It can be emulated by changing the Stage size and perspective and requeueing a redraw after calling clutter_stage_ensure_viewport(). cogl.h.in | 10 ++++++---- common/cogl.c | 16 ++++++++-------- 2 files changed, 14 insertions(+), 12 deletions(-) commit b9e1c8258779b3327ddcbab2db8ebc60b232ecc2 Author: Emmanuele Bassi Date: Thu May 28 12:52:00 2009 +0100 [cogl deprecated] Add backface culling deprecation The backface culling enabling function was split and renamed, just like the depth testing one, so we need to add the macro to the cogl-deprecated.h header. cogl-deprecated.h | 13 ++++++------- 1 files changed, 6 insertions(+), 7 deletions(-) commit 2367e7d27140df826829177b236534ee1a01be15 Author: Robert Bragg Date: Thu May 28 12:49:29 2009 +0100 [cogl vertex buffers] Give indices a CoglHandle so they are shareable Previously indices were tightly bound to a particular Cogl vertex buffer but we would like to be able to share indices so now we have cogl_vertex_buffer_indices_new () which returns a CoglHandle. In particular we could like to have a shared set of indices for drawing lists of quads that can be shared between the pango renderer and the Cogl journal. cogl-vertex-buffer.h | 34 +++++-------- common/cogl-vertex-buffer-private.h | 7 +-- common/cogl-vertex-buffer.c | 97 ++++++++-------------------------- 3 files changed, 38 insertions(+), 100 deletions(-) commit 43623a6c44a9c4778cd72fefde3e76d24762cbdb Author: Robert Bragg Date: Thu May 28 02:03:16 2009 +0100 [cogl journal] If we are only flushing one quad use a TRIANGLE_FAN At the moment Cogl doesn't do much batching of quads so most of the time we are flushing a single quad at a time. This patch simplifies how we submit those quads to OpenGL by using glDrawArrays with GL_TRIANGLE_FAN mode instead of sending indexed vertices using GL_TRIANGLES mode. Note: I hope to follow up soon with changes that improve our batching and also move the indices into a VBO so they don't need to be re-validated every time we call glDrawElements. common/cogl-primitives.c | 80 ++++++++++++++++++++++++++------------------- 1 files changed, 46 insertions(+), 34 deletions(-) commit 4b105deb3581ebfa8acbc7992f24477d382ad993 Author: Robert Bragg Date: Tue May 26 18:25:00 2009 +0100 [deprecated defines] Adds some missing cogl_texture_* deprecated defines To assist people porting code from 0.8, the cogl_texture_* functions that have been replaced now have defines that give some hint as to how they should be replaced. cogl-deprecated.h | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) commit 2f0bda49fc4ba19fc2d853f79f48a8bb2e095bac Author: Robert Bragg Date: Tue May 26 16:55:11 2009 +0100 [cogl] renamed cogl_enable_* to cogl_set_*_enabled + added getters cogl_enable_depth_test and cogl_enable_backface_culling have been renamed and now have corresponding getters, the new functions are: cogl_set_depth_test_enabled cogl_get_depth_test_enabled cogl_set_backface_culling_enabled cogl_get_backface_culling_enabled cogl-deprecated.h | 1 + cogl.h.in | 27 +++++++++++++++++++++++---- common/cogl.c | 25 +++++++++++++++++-------- doc/reference/cogl/cogl-sections.txt | 6 ++++-- 4 files changed, 45 insertions(+), 14 deletions(-) commit 18193e5322500b9cd3f372223b33581558758312 Author: Robert Bragg Date: Tue May 26 11:33:54 2009 +0100 [cogl matrix] Support ortho and perspective projections. This adds cogl_matrix api for multiplying matrices either by a perspective or ortho projective transform. The internal matrix stack and current-matrix APIs also have corresponding support added. New public API: cogl_matrix_perspective cogl_matrix_ortho cogl_ortho cogl_set_modelview_matrix cogl_set_projection_matrix cogl-matrix.h | 70 +++++++++-- cogl.h.in | 39 ++++++ common/cogl-current-matrix.c | 215 +++++++++++++++++++--------------- common/cogl-matrix-stack.c | 68 ++++++++--- common/cogl-matrix-stack.h | 20 +++- common/cogl-matrix.c | 87 +++++++++++--- doc/reference/cogl/cogl-sections.txt | 19 ++-- 7 files changed, 370 insertions(+), 148 deletions(-) commit 25b3c84a5ac8867790669ee22c7f588e6eca66a6 Author: Robert Bragg Date: Tue May 26 15:41:53 2009 +0100 [cogl] Remove cogl_{create,destroy}_context from the public API cogl_create_context is dealt with internally when _cogl_get_default context is called, and cogl_destroy_context is currently never called. It might be nicer later to get an object back when creating a context so Cogl can support multiple contexts, so these functions are being removed from the API until we get a chance to address context management properly. For now cogl_destroy_context is still exported as _cogl_destroy_context so Clutter could at least install a library deinit handler to call it. cogl.h.in | 28 ++++++++++++---------------- doc/reference/cogl/cogl-sections.txt | 3 --- gl/cogl-context.c | 4 ++-- gles/cogl-context.c | 4 ++-- 4 files changed, 16 insertions(+), 23 deletions(-) commit 1669fd7332ca760f3363c3dfe4afdc8949a6a3cd Author: Robert Bragg Date: Tue May 26 16:27:36 2009 +0100 [vbo indices] tweak add_indices api to return an id and add delete_indices api Originally cogl_vertex_buffer_add_indices let the user pass in their own unique ID for the indices; now the Id is generated internally and returned to the caller. cogl-vertex-buffer.h | 30 ++++++++++++++----- common/cogl-vertex-buffer.c | 52 ++++++++++++++++++++++------------ doc/reference/cogl/cogl-sections.txt | 1 + 3 files changed, 57 insertions(+), 26 deletions(-) commit e4d820b75d1b09b952fd78fd161a25da4425c0d3 Author: Robert Bragg Date: Sun May 24 11:33:29 2009 +0100 [cogl-vertex-buffer] Seal GL types from the public API We now have CoglAttributeType and CoglVerticesMode typedefs to replace the use of GLenum in the public API. cogl-vertex-buffer.h | 118 +++++++++++++++++++++++++------------------ common/cogl-vertex-buffer.c | 48 +++++++++--------- 2 files changed, 93 insertions(+), 73 deletions(-) commit 58b89eabdf342b2bc1b684b28fd19dc8774f4795 Author: Robert Bragg Date: Sun May 24 04:04:38 2009 +0100 [cogl-vertex-buffers] Support putting index arrays into VBOS It's now possible to add arrays of indices to a Cogl vertex buffer and they will be put into an OpenGL vertex buffer object. Since it's quite common for index arrays to be static it saves the OpenGL driver from having to validate them repeatedly. This changes the cogl_vertex_buffer_draw_elements API: It's no longer possible to provide a pointer to an index array at draw time. So cogl_vertex_buffer_draw_elements now takes an indices identifier that should correspond to an idendifier returned when calling cogl_vertex_buffer_add_indices () cogl-vertex-buffer.h | 79 +++++++++++++---- common/cogl-vertex-buffer-private.h | 33 +++++-- common/cogl-vertex-buffer.c | 159 +++++++++++++++++++++++++++++++--- doc/reference/cogl/cogl-sections.txt | 2 + 4 files changed, 231 insertions(+), 42 deletions(-) commit 02faadae8bc89324431406d4fc617eb8b54e2821 Author: Robert Bragg Date: Sat May 23 17:52:18 2009 +0100 [cogl] Remove cogl_flush_gl_state from the API This is being removed before we release Clutter 1.0 since the implementation wasn't complete, and so we assume no one is using this yet. Util we have someone with a good usecase, we can't pretend to support breaking out into raw OpenGL. cogl.h.in | 8 +++++++- common/cogl.c | 2 ++ 2 files changed, 9 insertions(+), 1 deletions(-) commit 492f0e5d14fd0622626108468a71436bc1c86f6a Author: Robert Bragg Date: Sat May 23 17:42:10 2009 +0100 [material] Reduce the material API in preperation for releasing Clutter 1.0 There were a number of functions intended to support creating of new primitives using materials, but at this point they aren't used outside of Cogl so until someone has a usecase and we can get feedback on this API, it's being removed before we release Clutter 1.0. cogl-material.h | 129 +++++----------------------------- common/cogl-handle.h | 17 +++-- common/cogl-material-private.h | 86 ++++++++++++++++++++++ common/cogl-material.c | 6 +- common/cogl-primitives.c | 50 +++++++------- common/cogl-vertex-buffer.c | 15 ++-- common/cogl.c | 3 +- doc/reference/cogl/cogl-sections.txt | 3 + gl/cogl-context.c | 4 +- gl/cogl-primitives.c | 15 ++-- gles/cogl-context.c | 4 +- gles/cogl-primitives.c | 15 ++-- 12 files changed, 174 insertions(+), 173 deletions(-) commit 2dc882f685a282000a1998f98edcb387953c5ac5 Author: Robert Bragg Date: Sat May 23 16:23:00 2009 +0100 [cogl-material] Removes all the API made redundant by the blend strings API This removes the following API: cogl_material_set_blend_factors cogl_material_set_layer_combine_function cogl_material_set_layer_combine_arg_src cogl_material_set_layer_combine_arg_op These were rather awkward to use, so since it's expected very few people are using them at this point and it should be straight forward to switch over to blend strings, the API is being removed before we release Clutter 1.0. cogl-material.h | 293 ---------------------------------- common/cogl-material-private.h | 20 ++-- common/cogl-material.c | 176 +++------------------ doc/reference/cogl/cogl-sections.txt | 11 -- 4 files changed, 34 insertions(+), 466 deletions(-) commit bc8a18ebc38fb5bde2bd23e080b2d2228a9a9f08 Author: Robert Bragg Date: Mon May 11 00:40:41 2009 +0100 [cogl-material] Support string based blending and layer combine descriptions Setting up layer combine functions and blend modes is very awkward to do programatically. This adds a parser for string based descriptions which are more consise and readable. E.g. a material layer combine function could now be given as: "RGBA = ADD (TEXTURE[A], PREVIOUS[RGB])" or "RGB = REPLACE (PREVIOUS)" "A = MODULATE (PREVIOUS, TEXTURE)" The simple syntax and grammar are only designed to expose standard fixed function hardware, more advanced combining must be done with shaders. This includes standalone documentation of blend strings covering the aspects that are common to blending and texture combining, and adds documentation with examples specific to the new cogl_material_set_blend() and cogl_material_layer_set_combine() functions. Note: The hope is to remove the now redundant bits of the material API before 1.0 cogl-debug.h | 20 +- cogl-material.h | 244 +++++++-- common/Makefile.am | 2 + common/cogl-blend-string.c | 999 ++++++++++++++++++++++++++++++++++ common/cogl-blend-string.h | 151 +++++ common/cogl-debug.c | 3 +- common/cogl-material-private.h | 13 +- common/cogl-material.c | 406 ++++++++++++++- doc/reference/cogl/Makefile.am | 9 +- doc/reference/cogl/blend-strings.xml | 130 +++++ doc/reference/cogl/cogl-docs.xml | 1 + doc/reference/cogl/cogl-sections.txt | 4 + gl/cogl-context.c | 3 + gl/cogl-context.h | 3 + gl/cogl-defines.h.in | 12 + gl/cogl.c | 10 + gles/cogl-gles2-wrapper.c | 9 +- gles/cogl-gles2-wrapper.h | 5 +- gles/cogl-texture.c | 49 +- 19 files changed, 1990 insertions(+), 83 deletions(-) commit 344dc626386de4f53d162215370fe3d65170ca95 Author: Robert Bragg Date: Wed May 27 23:39:18 2009 +0100 [build] Fixes some compiler warnings when building for GLES 2 There were a number of variables shadowing other symbols, and an unused display variable. gles/cogl-gles2-wrapper.c | 20 ++++++++++---------- gles/cogl-primitives.c | 36 ++++++++++++++++++------------------ 2 files changed, 28 insertions(+), 28 deletions(-) commit c56d5b1468e411450f0370070196abec0ccec7d6 Author: Emmanuele Bassi Date: Sat May 23 19:18:18 2009 +0100 [cogl] Remove max_waste argument from Texture ctors The CoglTexture constructors expose the "max-waste" argument for controlling the maximum amount of wasted areas for slicing or, if set to -1, disables slicing. Slicing is really relevant only for large images that are never repeated, so it's a useful feature only in controlled use cases. Specifying the amount of wasted area is, on the other hand, just a way to mess up this feature; 99% the times, you either pull this number out of thin air, hoping it's right, or you try to do the right thing and you choose the wrong number anyway. Instead, we can use the CoglTextureFlags to control whether the texture should not be sliced (useful for Clutter-GST and for the texture-from-pixmap actors) and provide a reasonable value for enabling the slicing ourself. At some point, we might even provide a way to change the default at compile time or at run time, for particular platforms. Since max_waste is gone, the :tile-waste property of ClutterTexture becomes read-only, and it proxies the cogl_texture_get_max_waste() function. Inside Clutter, the only cases where the max_waste argument was not set to -1 are in the Pango glyph cache (which is a POT texture anyway) and inside the test cases where we want to force slicing; for the latter we can create larger textures that will be bigger than the threshold we set. Signed-off-by: Emmanuele Bassi Signed-off-by: Robert Bragg Signed-off-by: Neil Roberts cogl-texture.h | 34 +++++++-------------- cogl-types.h | 4 ++- common/cogl-util.c | 1 + gl/cogl-context.c | 6 +-- gl/cogl-texture.c | 81 ++++++++++++++++++++++++++------------------------ gles/cogl-context.c | 6 +-- gles/cogl-texture.c | 60 ++++++++++++++++++++++---------------- 7 files changed, 97 insertions(+), 95 deletions(-) commit 3db47a8da3419dd63b4866ba64df30b93be84ab2 Merge: afa6451 c73d340 Author: Emmanuele Bassi Date: Fri May 22 12:00:33 2009 +0100 Merge branch 'master' into 1.0-integration * master: [cogl-vertex-buffer] Ensure the clip state before rendering [test-text-perf] Small fix-ups Add a test for text performance [build] Ensure that cogl-debug is disabled by default [build] The cogl GE macro wasn't passing an int according to the format string Use the right internal format for GL_ARB_texture_rectangle [actor_paint] Ensure painting is a NOP for actors with opacity = 0 Make backface culling work with vertex buffers commit c73d3404483c67b2d15eac17ef95cb9cabadf29f Author: Neil Roberts Date: Fri May 22 11:41:02 2009 +0100 [cogl-vertex-buffer] Ensure the clip state before rendering Before any rendering is done by Cogl it needs to ensure the clip stack is set up correctly by calling cogl_clip_ensure. This was not being done for the Cogl vertex buffer so it would still use the clip from the previous render. common/cogl-vertex-buffer.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit afa6451befe8a25357f153af28104b120c58a316 Merge: b9cde2c 598939c Author: Neil Roberts Date: Thu May 21 16:51:16 2009 +0100 Merge branch 'pango-vbo' into 1.0-integration This makes it cache the geometry of PangoLayouts into a VBO as described in bug #1572. commit 2e6bb11201eb900a889474e95999c38e171b584d Author: Robert Bragg Date: Thu May 21 15:04:38 2009 +0100 [build] The cogl GE macro wasn't passing an int according to the format string This patch simply updates the arguments passed to g_warning inline with the given format string. common/cogl-internal.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit c83ad109db36a07342a0e4575036cf8410c5f1d4 Author: Neil Roberts Date: Thu May 21 14:56:38 2009 +0100 Make backface culling work with vertex buffers Backface culling is enabled as part of cogl_enable so the different rendering functions in Cogl need to explicitly opt-in to have backface culling enabled. Cogl vertex buffers should allow backface culling so they should check whether it is enabled and then set the appropriate cogl_enable flag. cogl.h.in | 6 +++--- common/cogl-vertex-buffer.c | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) commit b9cde2c6f41cfe456b7cfb0e4d798e71667dd3a5 Merge: 8eb66da 320bcd9 Author: Emmanuele Bassi Date: Wed May 20 16:49:22 2009 +0100 Merge commit 'origin/master' into 1.0-integration Conflicts: clutter/clutter-texture.c clutter/cogl/gl/cogl-fbo.c commit 320bcd9230992567c3e5c569277099d9c10e6594 Author: Emmanuele Bassi Date: Wed May 20 15:15:25 2009 +0100 [cogl] Do no include gprintf.h We are not using any of the g_printf* family of functions, so we can import glib.h instead. common/cogl-vertex-buffer.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit 2fdc7e6a1b3bcbdd5ad147e986bb0495578afd1b Author: Emmanuele Bassi Date: Tue May 19 16:00:18 2009 +0100 [cogl] Move debugging to a configure-time switch Currently, COGL depends on defining debug symbols by manually modifying the source code. When it's done, it will forcefully print stuff to the console. Since COGL has also a pretty, runtime selectable debugging API we might as well switch everything to it. In order for this to happen, configure needs a new: --enable-cogl-debug command line switch; this will enable COGL debugging, the CoglHandle debugging and will also turn on the error checking for each GL operation. The default setting for the COGL debug defines is off, since it slows down the GL operations; enabling it for a particular debug build is trivial, though. cogl-debug.h | 3 ++- common/Makefile.am | 2 +- common/cogl-debug.c | 3 ++- common/cogl-handle.h | 23 ++++++++++++----------- common/cogl-internal.h | 7 +++---- gl/Makefile.am | 2 +- gles/Makefile.am | 2 +- 7 files changed, 22 insertions(+), 20 deletions(-) commit cf4a49061aa707a94dee85dfe2d2c0ddb0eacd4a Author: Emmanuele Bassi Date: Tue May 19 14:44:29 2009 +0100 [cogl] Rework the debug messages COGL has a debug message system like Clutter's own. In parallel, it also uses a coupld of #defines. Spread around there are also calls to printf() instead to the more correct g_log* wrappers. This commit tries to unify and clean up the macros and the debug message handling inside COGL to be more consistent. common/cogl-handle.h | 145 ++++++++++++++++++++++------------------------ common/cogl-internal.h | 43 ++++++-------- common/cogl-primitives.c | 30 +++++----- common/cogl.c | 31 +++++++--- gl/cogl-texture.c | 22 ++------ gles/cogl-texture.c | 11 ---- 6 files changed, 131 insertions(+), 151 deletions(-) commit e73a3899e55208f9930231ffd9943f1ac64c8db4 Author: Emmanuele Bassi Date: Tue May 19 14:42:37 2009 +0100 Remove duplicate cogl-internal.h header The cogl-internal.h header has been moved inside cogl/common in commit 8a1b4f8326 but has been left behind inside cogl/gl and cogl/gles. gl/Makefile.am | 1 - gl/cogl-internal.h | 66 ----------------------------------- gles/Makefile.am | 1 - gles/cogl-internal.h | 93 -------------------------------------------------- 4 files changed, 0 insertions(+), 161 deletions(-) commit 64b727d329c72fdf88c4430500638e480a5deeee Author: Emmanuele Bassi Date: Mon May 18 19:38:03 2009 +0100 [cogl] Rework the GL-error-to-string conversion The code for the conversion of the GL error enumeration code into a string is not following the code style and conventions we follow in Clutter and COGL. The GE() macro is also using fprintf(stderr) directly instead of using g_warning() -- which is redirectable to an alternative logging system using the g_log* API. common/cogl-internal.h | 22 ++++++++++---------- common/cogl.c | 52 ++++++++++++++++++++++++----------------------- 2 files changed, 38 insertions(+), 36 deletions(-) commit 642f55132159f01907814cfeecab4b14b69d9eac Author: Emmanuele Bassi Date: Thu May 14 23:23:00 2009 +0100 [build] Link Cogl against -lm We use math routines inside Cogl, so it's correct to have it in the LIBADD line. In normal usage something else was pulling in -lm, but the introspection is relying on linking against the convenience library. Based on a patch by: Colin Walters Signed-off-by: Emmanuele Bassi common/Makefile.am | 10 +++------- gl/Makefile.am | 9 +++------ gles/Makefile.am | 13 ++++--------- 3 files changed, 10 insertions(+), 22 deletions(-) commit cbe4767796e21b2c64017fa6d723f928f77c388a Author: Emmanuele Bassi Date: Thu May 14 19:51:03 2009 +0100 [build] List cogl-internal.h During the Makefile clean up, cogl-internal.h got lost and this broke the dist. Let's put it back in. common/Makefile.am | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 8f161a1e116ceec091d3b1a994d5244e784ad90e Author: Emmanuele Bassi Date: Thu May 14 10:02:06 2009 +0100 [build] Fix with --disable-introspection The required "fake" libclutter-cogl.la upon with the main clutter shared object depends is only built with introspection enabled instead of being built unconditionally. Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 38f6fb70acc14252b026230f7e760c49d0ff410f Author: Owen W. Taylor Date: Wed May 13 23:14:24 2009 +0100 Don't build Cogl.gir against installed Clutter library Passing: --library=clutter-@CLUTTER_FLAVOUR@-@CLUTTER_API_VERSION@ to g-ir-scanner, when building Cogl was causing g-ir-scanner to link the introspection program against the installed clutter library, if it existed or fail otherwise. Instead copy the handling from the json/ directory where we link against the convenience library to scan, and do the generation of the typelib later in the main clutter/directory. Fixes bug: http://bugzilla.openedhand.com/show_bug.cgi?id=1594 Signed-off-by: Emmanuele Bassi Makefile.am | 29 +++++++++++------------------ 1 files changed, 11 insertions(+), 18 deletions(-) commit aeb1516a89ba04b7900de66a19de2ad7505000db Author: Robert Bragg Date: Fri May 8 16:32:01 2009 +0100 [cogl-clip-stack] Support pushing rectangles onto the stack using window coords Previously clipping could only be specified in object coordinates, now rectangles can also be pushed in window coordinates. Internally rectangles pushed this way are intersected and then clipped using scissoring. We also transparently try to convert rectangles pushed in object coordinates into window coordinates as we anticipate the scissoring path will be faster then the clip planes and undoubtably it will be faster than using the stencil buffer. cogl.h.in | 21 ++++++ common/cogl-clip-stack.c | 165 +++++++++++++++++++++++++++++++++++++++++++-- common/cogl.c | 2 + 3 files changed, 180 insertions(+), 8 deletions(-) commit 6db0d421933f5f8e1759257d2622f9a24dc5b1ea Author: Robert Bragg Date: Tue May 12 14:15:18 2009 +0100 [cogl] Remove the COGL{enum,int,uint} typedefs COGLenum, COGLint and COGLuint which were simply typedefs for GL{enum,int,uint} have been removed from the API and replaced with specialised enum typedefs, int and unsigned int. These were causing problems for generating bindings and also considered poor style. The cogl texture filter defines CGL_NEAREST and CGL_LINEAR etc are now replaced by a namespaced typedef 'CoglTextureFilter' so they should be replaced with COGL_TEXTURE_FILTER_NEAREST and COGL_TEXTURE_FILTER_LINEAR etc. The shader type defines CGL_VERTEX_SHADER and CGL_FRAGMENT_SHADER are handled by a CoglShaderType typedef and should be replaced with COGL_SHADER_TYPE_VERTEX and COGL_SHADER_TYPE_FRAGMENT. cogl_shader_get_parameteriv has been replaced by cogl_shader_get_type and cogl_shader_is_compiled. More getters can be added later if desired. cogl-shader.h | 81 ++++++++++++++++++------------ cogl-texture.h | 54 +++++++++++++++++++-- doc/reference/cogl/cogl-sections.txt | 3 +- gl/cogl-defines.h.in | 13 ----- gl/cogl-program.c | 14 +++--- gl/cogl-shader.c | 73 ++++++++++++++++++++++----- gl/cogl-texture-private.h | 4 +- gl/cogl-texture.c | 20 ++++---- gles/cogl-defines.h.in | 16 ------ gles/cogl-program.c | 26 +++++----- gles/cogl-shader.c | 90 +++++++++++++++++++++++++--------- gles/cogl-texture-private.h | 4 +- gles/cogl-texture.c | 8 ++-- 13 files changed, 263 insertions(+), 143 deletions(-) commit 58918f0201ba880f8680bfb83637cc21f36da940 Author: Neil Roberts Date: Tue May 12 14:15:37 2009 +0100 [build] Fix out-of-tree builds for Cogl Commit 43fa38fcf5 broke out-of-tree builds by removing some of the builddir directories from the include path. builddir/clutter/cogl and builddir/clutter are needed because cogl.h and cogl-defines-gl.h are automatically generated by the configure script. The main clutter headers are in the srcdir so this needs to be in the path too. gl/Makefile.am | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit ddd0392f71e67df436c538a7724bcdbcd89ab34f Author: Emmanuele Bassi Date: Sun May 10 00:41:17 2009 +0100 [build] Unbreak compilation When building Clutter with introspection enabled everything stops at Cogl GIR generation because it depends on the installed library to work. Since we still require some changes in the API to be able to build the GIR and the typelib for Cogl we should disable the generation of the GIR as well. Makefile.am | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 4c2e593266b64a5df1b35af35ee62ba74035212e Author: Emmanuele Bassi Date: Wed May 6 11:18:31 2009 +0100 [build] Build Cogl introspection data Currently, the introspection data for Cogl is built right into Clutter's own typelib. This makes functions like: cogl_path_round_rectangle() Appear as: Clutter.cogl_path_round_rectangle() It should be possible, instead, to have a Cogl namespace and: Cogl.path_round_rectangle() This means building introspection data for Cogl alone. Unfortunately, there are three types defined in Cogl that confuse the introspection scanner, and make it impossible to build a typelib: COGLint COGLuint COGLenum These three types should go away before 1.0, substituted by int, unsigned int and proper enumeration types. For this reason, we can just set up the GIR build and wait until the last moment to create the typelib. Once that has been done, we will be able to safely remove the Cogl API from the Clutter GIR and typelib and let people import Cogl if they want to use the Cogl API via introspection. Makefile.am | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 57 insertions(+), 0 deletions(-) commit 39d39ba14bce64a040d3a4b0b6738afc9c7eba57 Author: Emmanuele Bassi Date: Wed May 6 10:55:17 2009 +0100 [build] Clean up the makefile Split out the files into their own variables to clean up the Makefile template; also use top_srcdir with the header files instead of top_builddir. gl/Makefile.am | 102 ++++++++++++++++++++++++++++---------------------------- 1 files changed, 51 insertions(+), 51 deletions(-) commit 3bde41c63cab00fb5e20a3ee1266f1bc18ac0f9b Author: Emmanuele Bassi Date: Wed May 6 10:35:28 2009 +0100 Fix inclusion guards and headers The C++ inclusion guards G_BEGIN_DECLS and G_END_DECLS are defined by GLib; so we need to include glib.h before using them. cogl-bitmap.h | 4 ++-- cogl-shader.h | 2 +- cogl-texture.h | 4 ++-- gl/cogl-defines.h.in | 1 + gles/cogl-defines.h.in | 1 + 5 files changed, 7 insertions(+), 5 deletions(-) commit 93c57697221d0e66135cb14890a06089d81a6761 Author: Robert Bragg Date: Fri May 1 09:53:20 2009 +0100 [cogl-material] Adds a cogl_material_set_color4f convenience function This is simply a wrapper around cogl_color_set_from_4f and cogl_material_set_color. We already had a prototype for this, it was an oversight that it wasn't already implemented. cogl-material.h | 4 ++-- common/cogl-material.c | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) commit 869a2b4167cb56131a6c89a2f6b043001891aadd Author: Robert Bragg Date: Thu Apr 30 22:19:43 2009 +0100 [cogl-offscreen] Cleans up the cogl offscreen API and adds documentation There were several functions I believe no one is currently using that were only implemented in the GL backend (cogl_offscreen_blit_region and cogl_offscreen_blit) that have simply been removed so we have a chance to think about design later with a real use case. There was one nonsense function (cogl_offscreen_new_multisample) that sounded exciting but in all cases it just returned COGL_INVALID_HANDLE (though at least for GL it checked for multisampling support first!?) it has also been removed. The MASK draw buffer type has been removed. If we want to expose color masking later then I think it at least would be nicer to have the mask be a property that can be set on any draw buffer. The cogl_draw_buffer and cogl_{push,pop}_draw_buffer function prototypes have been moved up into cogl.h since they are for managing global Cogl state and not for modifying or creating the actual offscreen buffers. This also documents the API so for example desiphering the semantics of cogl_offscreen_new_to_texture() should be a bit easier now. cogl-offscreen.h | 97 +++++++----------------------- cogl-types.h | 4 +- cogl.h.in | 29 +++++++++ common/cogl-util.c | 1 - doc/reference/cogl/cogl-sections.txt | 4 +- gl/cogl-fbo.c | 109 ++------------------------------- gles/cogl-fbo.c | 91 ++-------------------------- gles/cogl-texture.c | 5 -- 8 files changed, 68 insertions(+), 272 deletions(-) commit cb344560dcf363fdd4ac830db6f59426ceae8c3b Author: Havoc Pennington Date: Thu Feb 19 22:37:08 2009 -0500 add cogl_push_draw_buffer() and cogl_pop_draw_buffer() These are necessary if nesting redirections to an fbo, otherwise there's no way to know how to restore previous state. glPushAttrib(GL_COLOR_BUFFER_BIT) would save draw buffer state, but also saves a lot of other stuff, and cogl_draw_buffer() relies on knowing about all draw buffer state changes. So we have to implement a draw buffer stack ourselves. Signed-off-by: Robert Bragg cogl-offscreen.h | 14 +++++++++ gl/cogl-context.c | 7 ++++- gl/cogl-context.h | 8 +++++- gl/cogl-fbo.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++++-- gles/cogl-context.c | 7 ++++- gles/cogl-context.h | 8 +++++- gles/cogl-fbo.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++++-- 7 files changed, 184 insertions(+), 10 deletions(-) commit c8862e35cc9de3398c942410a4b4c88872837bec Author: Robert Bragg Date: Thu Apr 30 18:00:22 2009 +0100 [cogl] Only expose CoglBitmap as a CoglHandle It was inconsistent that we exposed the CoglBitmap struct instead of an opaque CoglHandle. cogl-bitmap.h | 78 ++++++++++++++++++++++++++ cogl-texture.h | 45 +-------------- cogl-types.h | 7 -- cogl.h.in | 1 + common/Makefile.am | 2 +- common/cogl-bitmap-fallback.c | 2 +- common/cogl-bitmap-pixbuf.c | 2 +- common/cogl-bitmap-private.h | 101 ++++++++++++++++++++++++++++++++++ common/cogl-bitmap.c | 25 +++++--- common/cogl-bitmap.h | 98 --------------------------------- doc/reference/cogl/cogl-sections.txt | 13 ++-- gl/Makefile.am | 2 + gl/cogl-texture-private.h | 2 +- gl/cogl-texture.c | 13 +++- gles/Makefile.am | 2 + gles/cogl-texture-private.h | 2 +- gles/cogl-texture.c | 12 ++-- 17 files changed, 231 insertions(+), 176 deletions(-) commit 66cb117056d71e694765e7e8e4c4098b48351106 Author: Robert Bragg Date: Wed Apr 29 19:49:09 2009 +0100 [cogl-material] make _cogl_material_layer_free check for an invalid texture handle It is valid in some situations to have a material layer with an invalid texture handle (e.g. if you setup a texture combine mode before setting the texture) and so _cogl_material_layer_free needs to check for a valid handle before attempting to unref it. common/cogl-material.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 7e9685294e266e88bb8eaf5ac303d0a58e89ba07 Author: Robert Bragg Date: Mon Apr 27 15:48:12 2009 +0100 [cogl] Updates all file headers and removes lots of trailing white space Adds missing notices, and ensures all the notices are consistent. The Cogl blurb also now reads: * Cogl * * An object oriented GL/GLES Abstraction/Utility Layer cogl-color.h | 12 ++- cogl-debug.h | 23 +++++++ cogl-deprecated.h | 23 +++++++ cogl-fixed.h | 14 +++-- cogl-material.h | 23 +++++++ cogl-matrix.h | 26 ++++++++ cogl-offscreen.h | 14 +++-- cogl-path.h | 12 ++- cogl-shader.h | 12 ++- cogl-texture.h | 12 ++- cogl-types.h | 21 ++++--- cogl-vertex-buffer.h | 17 +++-- cogl.h.in | 9 +-- common/cogl-bitmap-fallback.c | 52 +++++++-------- common/cogl-bitmap-pixbuf.c | 38 +++++------ common/cogl-bitmap.c | 40 ++++++------ common/cogl-clip-stack.c | 8 +-- common/cogl-clip-stack.h | 8 +-- common/cogl-color.c | 23 +++++++ common/cogl-current-matrix.c | 11 ++-- common/cogl-current-matrix.h | 11 ++-- common/cogl-debug.c | 23 +++++++ common/cogl-fixed.c | 23 +++++++ common/cogl-handle.h | 8 +-- common/cogl-internal.h | 5 +- common/cogl-material-private.h | 26 ++++++++ common/cogl-material.c | 25 +++++++ common/cogl-matrix-stack.c | 11 ++-- common/cogl-matrix-stack.h | 11 ++-- common/cogl-matrix.c | 26 ++++++++ common/cogl-primitives.c | 122 +++++++++++++++++------------------ common/cogl-primitives.h | 8 +-- common/cogl-util.c | 16 ++--- common/cogl-util.h | 10 +-- common/cogl-vertex-buffer-private.h | 15 +++-- common/cogl-vertex-buffer.c | 17 +++-- common/cogl.c | 5 +- gl/cogl-context.c | 8 +-- gl/cogl-context.h | 8 +-- gl/cogl-defines.h.in | 22 +++---- gl/cogl-fbo.c | 84 ++++++++++++------------ gl/cogl-fbo.h | 8 +-- gl/cogl-internal.h | 8 +-- gl/cogl-primitives.c | 8 +-- gl/cogl-program.c | 16 ++--- gl/cogl-program.h | 8 +-- gl/cogl-shader-private.h | 8 +-- gl/cogl-shader.c | 10 +-- gl/cogl-texture-private.h | 8 +-- gl/cogl-texture.c | 13 ++-- gl/cogl.c | 4 +- gles/cogl-context.c | 8 +-- gles/cogl-context.h | 8 +-- gles/cogl-fbo.c | 8 +-- gles/cogl-fbo.h | 8 +-- gles/cogl-gles2-wrapper.c | 10 +-- gles/cogl-gles2-wrapper.h | 8 +-- gles/cogl-internal.h | 8 +-- gles/cogl-primitives.c | 8 +-- gles/cogl-program.c | 12 ++-- gles/cogl-program.h | 8 +-- gles/cogl-shader-private.h | 8 +-- gles/cogl-shader.c | 10 +-- gles/cogl-texture-private.h | 8 +-- gles/cogl-texture.c | 8 +-- gles/cogl-util.c | 10 +-- gles/cogl-util.h | 10 +-- gles/cogl.c | 4 +- gles/stringify.sh | 30 +++++++-- 69 files changed, 684 insertions(+), 463 deletions(-) commit 2d94b3f46f1a783c0e1562da604d920affbadc43 Author: Robert Bragg Date: Fri Apr 24 18:09:52 2009 +0100 [cogl] Adds a bitfield argument to cogl_clear for specifying which buffers to clear Redundant clearing of depth and stencil buffers every render can be very expensive, so cogl now gives control over which auxiliary buffers are cleared. Note: For now clutter continues to clear the color, depth and stencil buffer each paint. cogl.h.in | 21 ++++++++++++++++++--- common/cogl.c | 46 +++++++++++++++++++++++++--------------------- 2 files changed, 43 insertions(+), 24 deletions(-) commit 8eb66da6b0fbb022028d012a428a399892a0c0f3 Author: Johan Bilien Date: Fri Apr 24 15:07:49 2009 +0100 Unnecessary glColorMask on alpha drops performance Bug 1228 - Unnecessary glColorMask on alpha drops performance With DRI2, alpha is allowed in the window's framebuffer Signed-off-by: Emmanuele Bassi gl/cogl-fbo.c | 8 +------- 1 files changed, 1 insertions(+), 7 deletions(-) commit 598939cee1dc8d5235b25830803a5ebcc3c4d5ad Author: Robert Bragg Date: Mon Apr 20 12:36:43 2009 +0100 [gl/cogl.c] #include for OS X builds In unifying the {gl,gles}/cogl.c code recently, moving most of the code into common/cogl.c the gmodule.h include was also mistakenly moved. Thanks to Felix Rabe for reporting this issue. Note: I haven't tested this fix myself, as I'm not set up to be able to build for OS X common/cogl.c | 1 - gl/cogl.c | 1 + 2 files changed, 1 insertions(+), 1 deletions(-) commit c1afd0de6907d03821a2696c89b197c88b3580ef Author: Robert Bragg Date: Wed Apr 15 19:25:55 2009 +0100 [cogl vertex buffers] Adds fallbacks for drivers without VBO support Buffer objects aren't currently available for glx indirect contexts, so we now have a fallback that simply allocates fake client side vbos to store the attributes. common/cogl-vertex-buffer-private.h | 5 +- common/cogl-vertex-buffer.c | 149 +++++++++++++++++++++++++++-------- gles/cogl.c | 2 + 3 files changed, 121 insertions(+), 35 deletions(-) commit bf4a0fa03ff97b9e233129c11d237e9275caabe6 Author: Robert Bragg Date: Fri Apr 17 15:10:55 2009 +0100 [cogl debug] --cogl-debug=rectangles now outlines all cogl rectangles This makes the #if 0'd debug code that was in _cogl_journal_flush_quad_batch - which we have repeatedly found usefull for debugging various geometry issues in Clutter apps - a runtime debug option. The outline colors rotate in order from red to green to blue which can also help confirm the order that your geometry really drawn. The outlines are not affected by the current material state, so if you e.g. have a blending bug where geometry mysteriously disappears this can confirm if the underlying rectangles are actually being emitted but blending is causing them to be invisible. cogl-debug.h | 15 ++++++++------- common/cogl-debug.c | 3 ++- common/cogl-primitives.c | 7 +++---- 3 files changed, 13 insertions(+), 12 deletions(-) commit ccb334452edf61f9bef521093d345a7c413e8efd Merge: 458e6e0 4aea0d6 Author: Emmanuele Bassi Date: Wed Apr 15 18:08:14 2009 +0100 Merge branch 'text-actor-layout-height' * text-actor-layout-height: [clutter-text] Fix ellipsizing Support pango_layout_set_height() in ClutterText Conflicts: clutter/clutter-text.c commit 458e6e0356a2e3c25a7b133f6e6dfcc052b9c67a Author: Neil Roberts Date: Mon Apr 6 12:43:16 2009 +0100 [cogl-handle] Fix the broken debug macros The debug macros for tracking reference counting of CoglHandles had some typos introduced in c3d9f0 which meant it failed to compile when COGL_DEBUG is 1. common/cogl-handle.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 6a3588101b59aada63481440cb5e43a1933f1a21 Author: Robert Bragg Date: Sat Apr 4 19:02:01 2009 +0100 [cogl] cogl_is_*(): Don't dereference an invalid handle; just return FALSE An invalid handle is implicitly not of any type. common/cogl-handle.h | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit ed272213f002bde9ae947f0dea9aea343bd4d795 Author: Robert Bragg Date: Wed Apr 1 17:16:44 2009 +0100 [cogl-handle] Optimize how we define cogl handles The cogl_is_* functions were showing up quite high on profiles due to iterating through arrays of cogl handles. This does away with all the handle arrays and implements a simple struct inheritance scheme. All cogl objects now add a CoglHandleObject _parent; member to their main structures. The base object includes 2 members a.t.m; a ref_count, and a klass pointer. The klass in turn gives you a type and virtual function for freeing objects of that type. Each handle type has a _cogl_##handle_type##_get_type () function automatically defined which returns a GQuark of the handle type, so now implementing the cogl_is_* funcs is just a case of comparing with obj->klass->type. Another outcome of the re-work is that cogl_handle_{ref,unref} are also much more efficient, and no longer need extending for each handle type added to cogl. The cogl_##handle_type##_{ref,unref} functions are now deprecated and are no longer used internally to Clutter or Cogl. Potentially we can remove them completely before 1.0. common/cogl-handle.h | 171 ++++++++++++++++++----------------- common/cogl-material-private.h | 5 +- common/cogl-material.c | 31 +++---- common/cogl-util.c | 45 +++------ common/cogl-vertex-buffer-private.h | 7 ++- common/cogl-vertex-buffer.c | 7 +-- gl/cogl-context.c | 25 +----- gl/cogl-context.h | 13 --- gl/cogl-fbo.c | 5 +- gl/cogl-fbo.h | 6 +- gl/cogl-program.c | 5 +- gl/cogl-program.h | 4 +- gl/cogl-shader-private.h | 4 +- gl/cogl-shader.c | 5 +- gl/cogl-texture-private.h | 3 +- gl/cogl-texture.c | 16 +--- gles/cogl-context.c | 25 +----- gles/cogl-context.h | 13 --- gles/cogl-fbo.c | 5 +- gles/cogl-fbo.h | 6 +- gles/cogl-program.c | 9 +-- gles/cogl-program.h | 3 +- gles/cogl-shader-private.h | 4 +- gles/cogl-shader.c | 5 +- gles/cogl-texture-private.h | 3 +- gles/cogl-texture.c | 16 +--- 26 files changed, 165 insertions(+), 276 deletions(-) commit 4b484d6496b77112177b791925d3e13fcb27be96 Author: Robert Bragg Date: Thu Apr 2 11:50:44 2009 +0100 [cogl] handle_automatic_blend_enable(): consider layers with invalid textures A layer object may be instantiated when setting a combine mode, but before a texture is associated. (e.g. this is done by the pango renderer) if this is the case we shouldn't call cogl_texture_get_format() with an invalid cogl handle. This patch skips over layers without a texture handle when determining if any textures have an alpha channel. common/cogl-material.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit c2afbd415e7d5e8f9c50123afb4a1821655f8aee Author: Robert Bragg Date: Mon Mar 30 17:07:31 2009 +0100 Unifies 90% of the code in {gl,gles}/cogl.c in common/cogl.c This code keeps on diverging and we get bugs and fixes in one version but not the other. This should make things a bit more maintainable. common/Makefile.am | 1 + common/cogl-internal.h | 95 +++++++ common/cogl.c | 640 ++++++++++++++++++++++++++++++++++++++++++++++++ gl/cogl.c | 608 +--------------------------------------------- gles/cogl-internal.h | 3 + gles/cogl.c | 584 +------------------------------------------- 6 files changed, 749 insertions(+), 1182 deletions(-) commit 8a2145eb8bb35679092b1c89268b103d00aa0605 Author: Robert Bragg Date: Mon Mar 30 16:41:02 2009 +0100 Removes cogl_blend_func prototype from cogl-internal.h cogl_blend_func was removed a while ago so this was just a left over from then gl/cogl-internal.h | 4 ---- gles/cogl-internal.h | 4 ---- 2 files changed, 0 insertions(+), 8 deletions(-) commit f8ca841a8b2b29d9d4a0977e7116d4c361ea3311 Author: Neil Roberts Date: Wed Mar 25 14:53:58 2009 +0000 [doc] Fix two small typos in cogl-vertex-buffer The symbol name for cogl_vertex_buffer_draw_elements was wrong so it ended up with no documentation. The name for the vertex attribute was incorrect in cogl_vertex_buffer_add. cogl-vertex-buffer.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 935db8eec29b5961856ba5454286fe0be63cc575 Author: Robert Bragg Date: Mon Mar 23 12:46:20 2009 +0000 [build] Fixes a cogl-vertex-buffer.c warning when building for GLES GLES 1 doesn't support GLSL so it never needs to use the generic_index variable for generic attributes which was flagging a warning. common/cogl-vertex-buffer.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) commit d7c5fa4b610238eeaf000396fa5468c3a6a1265f Author: Robert Bragg Date: Mon Mar 23 12:29:15 2009 +0000 [cogl] Move rect and poly drawing code from cogl-texture.c to cogl-primitives.c None of this code directly related to implementing CoglTextures, and the code was needlessly duplicated between the GL and GLES backends. This moves the cogl_rectangle* and cogl_polygon* code into common/cogl-primitives.c makes which makes lot of sense since the two copies keep needlessly diverging introducing or fixing bugs in one but not the other. For instance I came accross one such bug regarding the enabling of texture units when unifying the code. common/cogl-primitives.c | 1256 ++++++++++++++++++++++++++++++++++++++++++- gl/cogl-texture-private.h | 34 ++ gl/cogl-texture.c | 1261 +------------------------------------------ gles/cogl-texture-private.h | 34 ++ gles/cogl-texture.c | 1244 +------------------------------------------ 5 files changed, 1331 insertions(+), 2498 deletions(-) commit c797d564b2c0939137876730ac9fe08a838a1b8d Author: Robert Bragg Date: Mon Mar 23 11:39:40 2009 +0000 [cogl_rectangles] A minor doc fix, and missing newline between functions The gtk-doc had a copy and paste error, saying the float array should be 8 elements per rectangle instead of 4. There was also no newline in the gles code before the new function. cogl-texture.h | 2 +- gles/cogl-texture.c | 1 + 2 files changed, 2 insertions(+), 1 deletions(-) commit 7b7ece9eda72797b897e16de19e6f439a8ae1829 Author: Johan Bilien Date: Fri Mar 20 19:22:23 2009 +0000 Allow using array of vertices even without textures It's often nice to be able to draw a batch of vertices, even if these have no texture coordinates. This add a cogl_rectangles, similar to cogl_rectangles_with_texture_coords, only without. cogl-texture.h | 21 +++++++++++++++++++++ gl/cogl-texture.c | 20 ++++++++++++++++++++ gles/cogl-texture.c | 19 +++++++++++++++++++ 3 files changed, 60 insertions(+), 0 deletions(-) commit bb761e760aebe4c61bc61c6736ca98f6fa6058e1 Author: Robert Bragg Date: Thu Mar 19 16:46:07 2009 +0000 Removes a hack in gles/cogl.c that was already fixed in gl/cogl.c It removes the need to cast a CoglMatrix to a float * for transforming a vertex manually instead of using cogl_matrix_transform_point. gles/cogl.c | 43 ++++++++++++------------------------------- 1 files changed, 12 insertions(+), 31 deletions(-) commit d176e16b4b41ef773f2d5bf55d4f8f0adebf47d1 Author: Emmanuele Bassi Date: Tue Mar 17 14:12:01 2009 +0000 Remove usage of the grave accent as quotation mark See: http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html This should make Thomas happy. common/cogl-util.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit f536398d00e65fc0911071ca19bffc70f9e37f0f Author: Robert Bragg Date: Tue Mar 17 00:12:27 2009 +0000 [cogl] Apply the fix from 2c1c836417 (Flush matrix before clip planes) to GLES glClipPlane() is affected by modelview matrix so we need to flush before calling it. gles/cogl.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 9611f33dd648fe21a9f59dc7ee910bc5ee27d3d1 Author: Robert Bragg Date: Mon Mar 16 14:58:00 2009 +0000 [cogl] Don't endlessly print the same warning regarding layer fallbacks There are various constraints for when we can support multi-texturing and when they can't be met we try and print a clear warning explaining why the operation isn't supported, but we shouldn't endlessly repeat the warning for every primitive of every frame. This patch fixes that. gl/cogl-texture.c | 94 ++++++++++++++++++++++++++++++-------------------- gles/cogl-texture.c | 90 ++++++++++++++++++++++++++++-------------------- 2 files changed, 109 insertions(+), 75 deletions(-) commit 2866b0e33b0eec23a5e0547676034eb18c6009e4 Author: Robert Bragg Date: Mon Mar 9 10:26:31 2009 +0000 [cogl-vertex-buffer] fix cogl_vertex_buffer_draw_elements prototype This function was renamed a while ago in the .c file from cogl_vertex_buffer_draw_range_elements but the corresponding .h and doc/reference/cogl changes weren't made. cogl-vertex-buffer.h | 14 +++++++------- doc/reference/cogl/cogl-sections.txt | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) commit a76e333f50aebdb474c9c50d41307c9b8429a6d3 Author: Robert Bragg Date: Sat Feb 28 17:39:38 2009 +0000 [cogl-vertex-buffer] Allow querying back the number of vertices a buffer represents This may be convenient e.g. at draw time if you are simply drawing all vertices cogl-vertex-buffer.h | 9 +++++++++ common/cogl-vertex-buffer.c | 13 +++++++++++++ doc/reference/cogl/cogl-sections.txt | 1 + 3 files changed, 23 insertions(+), 0 deletions(-) commit 39227def4b2289cd64669831e3d692debbf1c07c Author: Robert Bragg Date: Sat Feb 28 17:36:25 2009 +0000 [cogl-vertex-buffer] Add a flush of attribute changes in the *_draw() functions For convenience it is now valid to avoid a seperate call to cogl_vertex_buffer_submit() and assume that the _draw() calls will do this for you (though of course if you do this you still need to ensure the attribute pointers remain valid until your draw call.) cogl-vertex-buffer.h | 38 ++++++++++++++++++++++++-------------- common/cogl-vertex-buffer.c | 25 +++++++++++++++++++------ 2 files changed, 43 insertions(+), 20 deletions(-) commit 7598c551a2621129ac85b944eb6ebdc09c9c3e74 Author: Havoc Pennington Date: Mon Mar 16 15:09:33 2009 +0000 [cogl] Flush matrix before clip planes glClipPlane() is affected by modelview matrix so we need to flush before calling it. Signed-off-by: Emmanuele Bassi gl/cogl.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit f0775b8278b69d376a9476504f3ecd1d4cd2341e Merge: b6ee8fe bcbc0c7 Author: Øyvind Kolås Date: Mon Mar 16 00:40:27 2009 +0000 Merge branch 'async-texture-thread-pool' commit b6ee8fe8e4e4666cc8a7eaf00f5b6a9da66a8209 Author: Neil Roberts Date: Fri Mar 13 15:43:19 2009 +0000 [cogl-path] Minor fix to gtk-doc Fix the parameters in cogl_path_curve_to and cogl_path_rel_curve_to to match the actual names otherwise they won't appear correctly in the docs. cogl-path.h | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit b29e1b2f2ab134c5d4fa9718efdfd39ceaf02e5a Author: Emmanuele Bassi Date: Fri Mar 13 15:28:20 2009 +0000 [cogl] Avoid shadowing math.h symbols As usual, y1 and y2 end up shadowing symbols exported by math.h. cogl-path.h | 108 +++++++++++++++++++++++----------------------- common/cogl-primitives.c | 30 ++++++------ 2 files changed, 69 insertions(+), 69 deletions(-) commit 367dbd176ff44571f5dd595e526c22dafef7afc2 Author: Neil Roberts Date: Fri Mar 13 12:20:26 2009 +0000 Change cogl_path_rectangle and cogl_path_round_rectangle to take x1,y1,x2,y2 This matches the changes to cogl_rectangle to improve consistency. cogl-path.h | 34 +++++++++++++++++----------------- common/cogl-primitives.c | 30 +++++++++++++++--------------- 2 files changed, 32 insertions(+), 32 deletions(-) commit 5af7c85fa2c3997985486c54fa5b716a75873ff8 Merge: a06dd94 e1b8e94 Author: Robert Bragg Date: Thu Mar 12 18:59:20 2009 +0000 Merge branch 'cogl-client-matrix-stacks' * cogl-client-matrix-stacks: Maintain the Cogl assumption that the modelview matrix is normally current Finish GLES{1,2} support for client side matrix stacks Explicitly make the modelview-matrix current in cogl_{rotate,transform,etc} Avoid casting CoglMatrix to a GLfloat * when calling glGetFloatv Removes need for casting const float * in _cogl_set_clip_planes Virtualize GL matrix operations and use a client-side matrix when GL is indirect commit e1b8e9445d8036dc682a4f8d9eca926ff10ec4f4 Author: Robert Bragg Date: Thu Mar 12 14:16:48 2009 +0000 Maintain the Cogl assumption that the modelview matrix is normally current _cogl_add_path_to_stencil_buffer and _cogl_add_stencil_clip were leaving the projection matrix current when calling cogl_rectangle which was upsetting _cogl_current_matrix_state_flush. gl/cogl-primitives.c | 14 ++++++++++++-- gl/cogl.c | 16 ++++++++++++++-- gles/cogl-primitives.c | 14 ++++++++++++-- gles/cogl.c | 16 ++++++++++++++-- 4 files changed, 52 insertions(+), 8 deletions(-) commit dc94a11963180757170808eaea0a1a8f57e0721d Author: Robert Bragg Date: Thu Mar 12 13:34:36 2009 +0000 Finish GLES{1,2} support for client side matrix stacks Adds glFrustum wrappers (GLES only accepts floats not doubles, and GLES2 needs to use our internal cogl_wrap_glFrustumf) Adds GL_TEXTURE_MATRIX getter code in cogl_wrap_glGetFloatv Adds a GL_TEXTURE_MATRIX define for GLES2 common/cogl-current-matrix.c | 13 +++++++++++++ gles/cogl-gles2-wrapper.c | 10 ++++++++++ gles/cogl-gles2-wrapper.h | 1 + 3 files changed, 24 insertions(+), 0 deletions(-) commit 17f19c2bb8fb6a01a361836a113568be3b95bde9 Author: Robert Bragg Date: Thu Mar 12 13:32:10 2009 +0000 Use Cogl enum when making modelview-matrix current in cogl_{rotate,transform,etc} My previous patch incorrectly used the GL enum with the _cogl_set_current_matrix API. common/cogl-current-matrix.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) commit 81eadde16c182fe7556373b16c9d23792f292f6b Author: Robert Bragg Date: Fri Mar 6 03:43:24 2009 +0000 Explicitly make the modelview-matrix current in cogl_{rotate,transform,etc} Its not intended that users should use these with any other matrix mode, and internally we now have the _cogl_current_matrix API if we need to play with other modes. common/cogl-current-matrix.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit c43ebcd7ffee1a96103da5d2fe8a07d4601c26ca Author: Robert Bragg Date: Fri Mar 6 03:29:51 2009 +0000 Avoid casting CoglMatrix to a GLfloat * when calling glGetFloatv If we later add internal flags to CoglMatrix then this code wouldn't initialize those flags. The ways it's now done adds a redundant copy, but if that turns out to be something worth optimizing we can look again at using a cast but adding another way for initializing internal flags. common/cogl-current-matrix.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-) commit 4dd9200353c37f729f5df61ffcda10868e1d000b Author: Robert Bragg Date: Fri Mar 6 03:29:35 2009 +0000 80 char fix common/cogl-current-matrix.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit f52262d5ad5a0ac851ff0a44d1beca1e0c7a6027 Author: Robert Bragg Date: Fri Mar 6 02:39:24 2009 +0000 Removes need for casting (const float *) to (GLfloat *) in _cogl_set_clip_planes This removes cogl.c:apply_matrix(), and makes cogl.c:project_vertex() use cogl_matrix_transform_point instead. gl/cogl.c | 43 ++++++++++++------------------------------- 1 files changed, 12 insertions(+), 31 deletions(-) commit 11349b6c7479ebf42321c1f207dcc433d2847e4f Author: Havoc Pennington Date: Tue Feb 24 13:51:25 2009 -0500 Virtualize GL matrix operations and use a client-side matrix when GL is indirect This is useful because sometimes we need to get the current matrix, which is too expensive when indirect rendering. In addition, this virtualization makes it easier to clean up the API in the future. cogl-matrix.h | 21 ++ cogl.h.in | 18 ++ common/Makefile.am | 4 + common/cogl-current-matrix.c | 452 ++++++++++++++++++++++++++++++++++++++++++ common/cogl-current-matrix.h | 91 +++++++++ common/cogl-material.c | 6 +- common/cogl-matrix-stack.c | 327 ++++++++++++++++++++++++++++++ common/cogl-matrix-stack.h | 67 +++++++ common/cogl-matrix.c | 42 ++++ common/cogl-util.c | 23 +++ common/cogl-vertex-buffer.c | 4 + gl/cogl-context.c | 37 ++++ gl/cogl-context.h | 8 + gl/cogl-fbo.c | 42 ++-- gl/cogl-primitives.c | 20 ++- gl/cogl-texture.c | 5 +- gl/cogl.c | 233 +++++------------------ gles/cogl-context.c | 37 ++++ gles/cogl-context.h | 8 + gles/cogl-fbo.c | 36 ++-- gles/cogl-primitives.c | 20 ++- gles/cogl-texture.c | 33 ++-- gles/cogl.c | 235 +++++------------------ 23 files changed, 1315 insertions(+), 454 deletions(-) commit bcbc0c7c4ef266bf072219a27113fd905304a1ba Merge: a06dd94 ee3647f Author: Øyvind Kolås Date: Thu Mar 12 11:18:11 2009 +0000 Merge commit 'origin/async-texture-thread-pool' into async-size commit a06dd94eb81a22c851429a04860cade3b1ebce03 Author: Emmanuele Bassi Date: Tue Mar 10 18:05:08 2009 +0000 [cogl] Initialize all members of CoglContext Some members of CoglContext still escape initialization. gl/cogl-context.c | 1 + gles/cogl-context.c | 1 + 2 files changed, 2 insertions(+), 0 deletions(-) commit 949e37d332c82433c2ff38341ec25efd8f2f33e0 Author: Emmanuele Bassi Date: Tue Mar 10 17:53:51 2009 +0000 [cogl] Initialize boolean flag in CoglContext The private CoglContext is created using g_malloc() and not zeroed; this means we have to initialize the values we are going to check, to avoid hitting garbage. Thanks to Tommi Komulainen. gl/cogl-context.c | 2 ++ gles/cogl-context.c | 2 ++ 2 files changed, 4 insertions(+), 0 deletions(-) commit c50bd8b24ee2da1195e6cdcabcfe5b9fbd326be2 Author: Emmanuele Bassi Date: Mon Mar 9 17:47:21 2009 +0000 [cogl] Fix hardcoded paths in the pc file The commit 24ce193836 fixed the Clutter pkg-config file. Since COGL now ships its own, we need to fix that as well. cogl.pc.in | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 84229fa13c7ea991303789ab94cf8c213ec1921e Author: Emmanuele Bassi Date: Mon Mar 9 17:06:22 2009 +0000 [cogl-fixed] Implement the CoglFixed fundamental GType The type machinery for CoglFixed should be implemented by COGL itself, now that COGL exports the GType of its types. This allows moving most of what ClutterFixed did directly to CoglFixed where it belongs. cogl-types.h | 44 ++++++++++++- cogl.h.in | 33 --------- common/cogl-util.c | 186 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 223 insertions(+), 40 deletions(-) commit 198dcef7283bb619ebe7fd2ef5b06cbfe972dca9 Author: Emmanuele Bassi Date: Thu Mar 5 20:15:00 2009 +0000 [cogl-fixed] Add a double-to-fixed conversion macro Since the conversion of a floating point value to a fixed point value is already done in double precision we can safely expose a macro that converts a double precision floating point value to a CoglFixed one. cogl-fixed.h | 15 +++++++++++++-- 1 files changed, 13 insertions(+), 2 deletions(-) commit a60d0aa2315b02924cae2a63bb666212d831e15e Author: Emmanuele Bassi Date: Sat Feb 28 17:54:27 2009 +0000 Add pkg-config file for COGL COGL should ship its own pkg-config file, obviously still pointing to Clutter's compiler flags and linking options, for COGL-specific variables that might be queried at configure time. For instance, it's easier (and less verbose) to do: PKG_CHECK_EXISTS([cogl-gl-1.0], [has_gl_backend=yes], [has_gl_backend=no]) Than doing: AC_MSG_CHECKING([for GL support in COGL]) cogl_backend=`$PKG_CONFIG --variable=cogl clutter-0.9` if test x$cogl_backend = xgl; then has_gl_backend=yes AC_MSG_RESULT([found]) else has_gl_backend=no AC_MSG_RESULT([not found]) fi Makefile.am | 17 ++++++++++++++++- cogl.pc.in | 15 +++++++++++++++ 2 files changed, 31 insertions(+), 1 deletions(-) commit da9a1720fb42bdbd3fc6ef6feb2e50721224ee44 Author: Emmanuele Bassi Date: Sat Feb 28 16:03:11 2009 +0000 [cogl] Add a PANGO debug flag for CoglPango use The CoglPango code falls under the COGL "jurisdiction"; this means that it cannot include Clutter headers unless strictly necessary. The CoglPangoRenderer code was using the CLUTTER_NOTE() macro. Now that COGL has it's own COGL_NOTE() similar macro, CoglPango should use that and avoid including clutter-debug.h (which pulls in clutter-private.h which in turn pulls in clutter-actor.h). A new flag, COGL_DEBUG_PANGO, has been added to the COGL debug flags. cogl-debug.h | 3 ++- common/cogl-debug.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) commit f8166440227d905cebfd17a0a5b8507f3defd47d Author: Robert Bragg Date: Wed Feb 25 16:23:09 2009 +0000 [cogl-matrix] Documents that CoglMatrix members should be considered read only In the future if we want to annotate matrices with internal flags, and add caching of the inverse matrix then we need to ensure that all matrix modifications are done by cogl_matrix API so we'd know when to dirty the cache or update the flags. This just adds documentation to that effect, and assuming the most likley case where someone would try and directly write to matrix members would probably be to load a constant matrix other than the identity matrix; I renamed cogl_matrix_init_from_gl_matrix to cogl_matrix_init_from_array to make it seem more general purpose. cogl-matrix.h | 23 +++++++++++++++-------- common/cogl-matrix.c | 6 +++--- doc/reference/cogl/cogl-sections.txt | 2 ++ gl/cogl.c | 6 +++--- gles/cogl.c | 6 +++--- 5 files changed, 26 insertions(+), 17 deletions(-) commit 9878fdf5c67572dfc789ce2e25079b7349843260 Author: Robert Bragg Date: Tue Feb 24 11:33:58 2009 +0000 [cogl-matrix] Adds padding to CoglMatrix This adds enough padding to allow us to potentially add a cache of the inverse matrix in the future and private flags to annotate matrices. cogl-matrix.h | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 3490dcaba4cb8e211996868036bff4fcb7a86782 Author: Owen W. Taylor Date: Wed Feb 25 15:46:09 2009 -0500 Fix x/y confusion for GL_TEXTURE_RECTANGLE_ARB When "denormalizing" for texture rectangles, multiple X coordinates by the X size and Y coordinates by the Y size. http://bugzilla.openedhand.com/show_bug.cgi?id=1479 gl/cogl-texture.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit ee3647f84da28253d754c0154d254c7ead8a7f83 Author: Jonathan Matthew Date: Tue Feb 24 09:25:53 2009 +0000 Declare the EnumValues for PixelFormat static Bug 1473 - CoglPixelFormat enum data must be declared static When registering an enumeration GType, the GEnumValue or GFlagsValue arrays must be declared static; otherwise, you get a segmentation fault when calling the function again. Signed-off-by: Emmanuele Bassi common/cogl-util.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 9e9c615e49eda68a67685ee8d6bcdce8978316e9 Author: Emmanuele Bassi Date: Mon Feb 23 12:47:02 2009 +0000 Add runtime debug messages for COGL Clutter is able to show debug messages written using the CLUTTER_NOTE() macro at runtime, either by using an environment variable: CLUTTER_DEBUG=... or by using a command line switch: --clutter-debug=... --clutter-no-debug=... Both are parsed during the initialization process by using the GOption API. COGL would benefit from having the same support. In order to do this, we need a cogl_get_option_group() function in COGL that sets up a GOptionGroup for COGL and adds a pre-parse hook that will check the COGL_DEBUG environment variable. The OptionGroup will also install two command line switches: --cogl-debug --cogl-no-debug With the same semantics of the Clutter ones. During Clutter initialization, the COGL option group will be attached to the GOptionContext used to parse the command line options passed to a Clutter application. Every debug message written using: COGL_NOTE (SECTION, "message format", arguments); Will then be printed only if SECTION was enabled at runtime. This whole machinery, like the equivalent one in Clutter, depends on a compile time switch, COGL_ENABLE_DEBUG, which is enabled at the same time as CLUTTER_ENABLE_DEBUG. Having two different symbols allows greater granularity. cogl-debug.h | 45 +++++++++++++++++++++++ cogl.h.in | 18 ++++++++- common/Makefile.am | 3 +- common/cogl-debug.c | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++ gl/Makefile.am | 4 ++- gles/Makefile.am | 4 ++- 6 files changed, 167 insertions(+), 5 deletions(-) commit 58ec3f2f009b860776a4f748965b8387d153cfb2 Author: Robert Bragg Date: Sun Feb 22 15:25:00 2009 +0000 [Cogl] Remove a debugging assert that was triggering on false positives An assert to verify there was no error when generating a buffer object for the vertex buffer API was being hit when running the GLES1 conformance tests. common/cogl-vertex-buffer.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) commit 114385b2cf0f6aa09725bece92ce8eae6e5823e2 Author: Robert Bragg Date: Thu Feb 19 09:20:20 2009 +0000 [cogl-material] Always glBindTexture when flushing material state Bug #1457 - Creating a new texture messes up the cogl material state cache; reported by Neil Roberts We still don't have caching of bound texture state so we always have to re-bind the texture when flushing the GL state of any material layers. common/cogl-material.c | 42 +++++++++++++++++++++++------------------- 1 files changed, 23 insertions(+), 19 deletions(-) commit 25fc1b85ab2ea9aaa71f1bb03623ca4a484b7be8 Author: Robert Bragg Date: Thu Feb 19 09:01:18 2009 +0000 [Cogl] Fixes automatic handling of the GL blend enable state. Bug #1460 - Handling of flags in cogl_material_set_color Cogl automatically enables/disables blending based on whether the source color has an alhpa < 1.0, or if any textures with an alpha component are in use, but it wasn't doing it quite right. At the same time I removed some of the dirty flags which on second thought are nothing more than micro-optimsations that only helped clutter the code. thanks to Owen Taylor for reporting the bug common/cogl-material-private.h | 10 ++--- common/cogl-material.c | 78 ++++++++++++++-------------------------- gl/cogl-context.c | 1 - gles/cogl-context.c | 1 - 4 files changed, 31 insertions(+), 59 deletions(-) commit e91fe8817d9b405022efb42b741b3767b7f25e2c Author: Robert Bragg Date: Wed Feb 18 18:54:54 2009 +0000 [Cogl] the cogl_get_*_matrix functions now work with CoglMatrix types Since the CoglMatrix type was added for supporting texture matrices recently it made sense to be consistent accross the Cogl API and use the Cogl type over the GL style GLfloat m[16] arrays. cogl-matrix.h | 36 ++++++++++++++++++++++++++++++++++++ cogl.h.in | 14 ++++++-------- common/cogl-clip-stack.c | 14 +++++++------- common/cogl-matrix.c | 46 ++++++++++++++++++++++++++++++---------------- gl/cogl.c | 27 +++++++++++++++++++-------- gles/cogl.c | 27 +++++++++++++++++++-------- 6 files changed, 117 insertions(+), 47 deletions(-) commit e6a7a70d54d6f2151e7776edae525f88aaf6139c Author: Neil Roberts Date: Fri Feb 20 16:37:20 2009 +0000 [cogl-gles2-wrapper] Actually call glActiveTexture cogl_wrap_glActiveTexture needs to call the GL version of glActiveTexture otherwise the subsequent calls to glBindTexture will all be using texture unit 0. This fixes test-cogl-multitexture. gles/cogl-gles2-wrapper.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 74cd43e01caeee7c0f81ebffa06b1e2932e7e089 Author: Neil Roberts Date: Fri Feb 20 15:56:57 2009 +0000 [cogl-gles2-wrapper] Convert texture unit settings to be a static sized array Previously the texture unit settings were stored in growable GArrays and every time a new texture unit was encountered it would expand the arrays. However the array wasn't copied when stored in a CoglGles2WrapperSettings struct so all settings had the same array. This meant that it wouldn't detect that a different program is needed if a texture unit is disabled or enabled. The texture unit settings arrays are all now a fixed size and the enabledness of each unit is stored in a bit mask. Therefore the settings can just be copied around by assignment as before. This puts a limit on the number of texture units accessible by Cogl but I think it is worth it to make the code simpler and more efficient. The material API already poses a limit on the number of texture units it can use. gles/cogl-gles2-wrapper.c | 444 +++++++++++++++++++++------------------------ gles/cogl-gles2-wrapper.h | 36 ++-- 2 files changed, 229 insertions(+), 251 deletions(-) commit e226ffa364d5ada85877b612a7aeda75601368a9 Author: Emmanuele Bassi Date: Fri Feb 20 12:01:32 2009 +0000 [docs] Rename cogl-docs from sgml to xml The cogl-docs.sgml file has always been XML, so it's only fitting that we actually call it cogl-docs.xml. doc/reference/cogl/Makefile.am | 2 +- doc/reference/cogl/cogl-docs.sgml | 106 ------------------------------------- doc/reference/cogl/cogl-docs.xml | 106 +++++++++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+), 107 deletions(-) commit 82d093bbb7c43598396de0be7d4150540d46f128 Author: Emmanuele Bassi Date: Fri Feb 20 11:58:04 2009 +0000 [docs] Use the --name-space option Now that we depend on gtk-doc 1.11 we can use the --name-space command line option for the mkdb utility. doc/reference/cogl/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 19634b4b0aa86c656e5442e20a9014862b77315c Author: Emmanuele Bassi Date: Thu Feb 19 17:06:25 2009 +0000 [docs] Update build for COGL API reference We need to initialize the type system for gtk-doc-scan, now that COGL exposes GTypes. doc/reference/cogl/Makefile.am | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 7808d85d03424ebe5d9b66c9837328c418489c4e Merge: 1d79e17 7ed9ded Author: Emmanuele Bassi Date: Thu Feb 19 14:42:40 2009 +0000 Merge branch 'build-enhancements' * build-enhancements: [build] Fix dist for the newly introduced m4 macro directory [build] Fix interaction between shave, gtk-doc and libtool 1.x [build] Add dolt [build] Beautify autotools' output [gitignore] update gitignore files for tests/ commit 1d79e173bb3f0def5cdd84b3f574becaaa203b98 Author: Emmanuele Bassi Date: Thu Feb 19 12:02:42 2009 +0000 [cogl] Provide GTypes for COGL types COGL types should be registered inside the GType system, for bindings and type checking inside properties and signals. CoglHandle is a boxed type with a ref+unref semantics; slightly evil from a bindings perspective (we cannot associate custom data to it), but better than nothing. The rest of the exposed types are enumerations or bitmasks. cogl-types.h | 21 ++++++- common/cogl-util.c | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 194 insertions(+), 2 deletions(-) commit 5abb11ba6b054d3fef55caabf6bc11d84e393a23 Author: Emmanuele Bassi Date: Thu Feb 19 11:55:54 2009 +0000 [cogl] Add cogl_is_material to cogl-material.h The COGL_DEFINE_HANDLE macro generates a cogl_is_ function as well, to check whether a CoglHandle opaque pointer is of type . The handle for CoglMaterial does not export cogl_is_material() in its installed header. cogl-material.h | 11 ++++++++++- doc/reference/cogl/cogl-sections.txt | 1 + 2 files changed, 11 insertions(+), 1 deletions(-) commit 268fa9c7abf142e0d542d3d213f2154de48cc138 Author: Emmanuele Bassi Date: Wed Feb 18 18:45:58 2009 +0000 Initialize a variable to avoid warnings The gl_mode variable was not initialized, and the compiler complained when using the anal-retentive compiler flags. gl/cogl.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 7ed9ded5d3deb72a8ea20edd333c81ce37b213e2 Author: Robert Bragg Date: Wed Feb 18 16:06:11 2009 +0000 [cogl-color.c] #include fix for the cogl_set_source_color prototype cogl.h wasn't being included so we got a compiler warning common/cogl-color.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 89d8ebcbb04c010cee47363bf0e9dcc31dcec406 Author: Robert Bragg Date: Thu Feb 12 13:23:20 2009 +0000 [Cogl] Renames cogl_paint_init to cogl_clear and adds a cogl_disable_fog function cogl_paint_init was a bit too miscellaneous; it mainly cleared the color, depth and stencil buffers but arbitrarily it also disabled fogging and lighting. It no longer disables lighting, since we know Cogl never enables lighting and disabling of fog is now handled with a seperate function. Since I noticed cogl_set_fog was taking a density argument documented as "Ignored" I've also added a mode argument to cogl_set_fog which exposes the exponential fog modes which can make use of the density. cogl.h.in | 245 +++++++++++++++++++++------------- doc/reference/cogl/cogl-sections.txt | 29 +++-- gl/cogl.c | 27 +++- gles/cogl.c | 32 ++++- 4 files changed, 218 insertions(+), 115 deletions(-) commit 145c2eb5f9058a6353c5b3653f5989fc2e79d85b Author: Robert Bragg Date: Thu Feb 12 11:08:00 2009 +0000 [Cogl] cogl_clip_{set*,unset} renamed to cogl_clip_{push*,pop} This is so they self document the stacking semantics of the cogl clip API cogl.h.in | 28 ++++++++++++++-------------- common/cogl-clip-stack.c | 22 +++++++++++----------- doc/reference/cogl/cogl-sections.txt | 8 ++++---- 3 files changed, 29 insertions(+), 29 deletions(-) commit 43a5fef73d2f93217d48331696d24a25438d0167 Author: Neil Roberts Date: Mon Feb 16 12:42:08 2009 +0000 Call glActiveTexture and glClientActiveTexture through cogl_get_proc_address All GL functions that are defined in a version later than 1.1 need to be called through cogl_get_proc_address because the Windows GL DLL does not export them to directly link against. common/cogl-material.c | 5 +++++ common/cogl-vertex-buffer.c | 2 ++ gl/cogl-context.c | 2 ++ gl/cogl-context.h | 3 +++ gl/cogl-defines.h.in | 8 ++++++++ gl/cogl-texture.c | 2 ++ gl/cogl.c | 12 +++++++++--- gles/cogl-texture.c | 2 ++ 8 files changed, 33 insertions(+), 3 deletions(-) commit ff7bd05745117c875bbd90b163b52bd5cc7c62bc Author: Robert Staudinger Date: Thu Feb 12 12:42:58 2009 +0000 [build] Add cogl.h to the built sources list The main COGL header file is generated at configure time. If something changes in the template, though, the file will not be regenerated. Adding cogl.h to the BUILT_SOURCES list will allow the regeneration to happen. Makefile.am | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 5901b4d045bceca0c3ddbd96f6ae1bff97e45113 Author: Robert Bragg Date: Fri Feb 6 11:16:42 2009 +0000 [docs] Various gtk-doc updates for Cogl This hides a number of internal structs and enums from the docs, and moves some functions to more appropriate sections as well as misc description updates (mostly for the vertex buffer api) cogl-color.h | 55 ------------ cogl-material.h | 109 ++++++++++++------------ cogl-matrix.h | 8 +- cogl-vertex-buffer.h | 158 ++++++++++++++++----------------- cogl.h.in | 94 ++++++++++++++++++++ doc/reference/cogl/cogl-docs.sgml | 10 +-- doc/reference/cogl/cogl-sections.txt | 104 +++++++++++----------- 7 files changed, 285 insertions(+), 253 deletions(-) commit c3b8dcd2f0a20269290422c82a638e5fd8b5f567 Author: Robert Bragg Date: Fri Feb 6 16:10:28 2009 +0000 [cogl-vertex-buffer] Some fixes for texturing and color arrays Fixes some blending issues when using color arrays since we were conflicting with the cogl_enable state + fixes a texture layer validation bug. Adds a basic textured triangle to test-vertex-buffer-contiguous. common/cogl-vertex-buffer.c | 19 ++++++++----------- 1 files changed, 8 insertions(+), 11 deletions(-) commit 9059367dcc07125a20ba3927481f6f312733f454 Author: Robert Bragg Date: Fri Feb 6 16:05:08 2009 +0000 [cogl-material] Fixes some dirty flag checks Flushing material layers wasn't clearing the right dirty flag and some of the tests used to avoid re-submitting GL state weren't complete. common/cogl-material.c | 98 +++++++++++++++++++++++++++++++----------------- 1 files changed, 63 insertions(+), 35 deletions(-) commit 06bfc00fbc3348a4c6b4cd43b3d1d35abf66287d Author: Robert Bragg Date: Wed Feb 4 09:21:37 2009 +0000 [Cogl] Renames cogl_fog_set to cogl_set_fog for consistency More things follow the _set_ convention. cogl.h.in | 10 +++++----- gl/cogl.c | 8 ++++---- gles/cogl.c | 8 ++++---- 3 files changed, 13 insertions(+), 13 deletions(-) commit acdc36a7c5a38371af24889c72c05b9047e79e90 Author: Neil Roberts Date: Thu Feb 5 19:48:00 2009 +0000 [cogl-texture] Fix offset to next quad when flushing the log When the quad log contains multiple textures (such as when a sliced texture is drawn) it dispatches the log with multiple calls to flush_quad_batch and walks a pointer along the list of vertices. However this pointer was being incremented by only one vertex so the next quad would be drawn with three of the vertices from the last quad. gl/cogl-texture.c | 4 ++-- gles/cogl-texture.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit fd4a6f9c811adefd86b83c9aa1828e63df4723f2 Author: Neil Roberts Date: Mon Feb 2 22:02:47 2009 +0000 [cogl-gles2-wrapper] Remove the FIXME to adjust the fragment color Removed some debugging code which sets the r and g values to 1 in the fragment shader. gles/cogl-gles2-wrapper.c | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-) commit b0ffe365ef9c2e2fc154d1c0a67d243f6c7aeb67 Author: Neil Roberts Date: Mon Feb 2 22:01:47 2009 +0000 [cogl-texture] Fix the count for the number of enabled arrays The quad drawing code keeps track of the number of texture units that have the tex coord array enabled so that in the next call it can disabled any that are no longer enabled. However it was using 'i+1' as the count but 'i' is already set to 'n_layers' from the previous for loop. Therefore it was disabling an extra texture unit. This doesn't normally matter but it was causing GLES 2 to pointlessly realize an extra unit. gles/cogl-texture.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit c50935edca272e75d8fba25f6e098e06e3f07c92 Author: Neil Roberts Date: Thu Jan 29 13:40:37 2009 +0000 Fix building GLES 2 after the material branch merge - In cogl-material.h it directly sets the values of the CoglMaterialLayerCombineFunc to some GL_* constants. However these aren't defined in GLES 2 beacuse it has no fixed function texture combining. Instead the CGL_* versions are now used. cogl-defines.h now sets these to either the GL_* version if it is available, otherwise it directly uses the number. - Under GLES 2 cogl-material.c needs to access the CoglTexture struct so it needs to include cogl-texture-private.h - There are now #define's in cogl-gles2-wrapper.h to remap the GL function names to the wrapper names. These are disabled in cogl-gles2-wrapper.c by defining COGL_GLES2_WRAPPER_NO_REMAP. - Added missing wrappers for glLoadMatrixf and glMaterialfv. - Renamed the TexEnvf wrapper to TexEnvi because the latter is used instead from the material API. cogl-material.h | 22 +++--- common/cogl-material.c | 3 +- common/cogl-vertex-buffer.c | 9 +-- gl/cogl-defines.h.in | 3 + gles/cogl-defines.h.in | 199 +++++++++++++++++++++++++++++++++++++++---- gles/cogl-gles2-wrapper.c | 32 ++++++-- gles/cogl-gles2-wrapper.h | 106 +++++++++++++++-------- 7 files changed, 297 insertions(+), 77 deletions(-) commit a54d13368fb8c4bc19ccc7049ec2507406ef0fc8 Author: Neil Roberts Date: Mon Feb 2 14:51:52 2009 +0000 [cogl-material] Always bind the new texture handle Cogl previously tried to cache the currently bound texture when drawing through the material API to avoid excessive GL calls. However, a few other places in Cogl and Clutter rebind the texture as well so this can cause problems. This was causing shaped windows to fail in Mutter because ClutterGLXTexturePixmap was binding a different texture to update it while the second texture unit was still active which meant the mask texture would not be selected when the shaped window was drawn subsequent times. Ideally we would fix this by providing a wrapper around glBindTexture which would affect the cached value. The cache would also have to be cleared if a selected texture was deleted. common/cogl-material.c | 20 +++++++++++--------- 1 files changed, 11 insertions(+), 9 deletions(-) commit 7c57d71e4e36fabfcce8ee6c1bcd36cb4faf5f7b Author: Emmanuele Bassi Date: Thu Jan 29 16:00:15 2009 +0000 Add cogl-material-private.h to the source files The material-private.h file was not added to the dist files and caused a build failure. common/Makefile.am | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 85f6701be17d35b882a0ca7847d4d557b853746f Author: Emmanuele Bassi Date: Thu Jan 29 13:31:11 2009 +0000 Fix a variable masking warning The usual issue with math.h defined symbols. common/cogl-primitives.c | 15 +++++++-------- 1 files changed, 7 insertions(+), 8 deletions(-) commit da9f956fd103e3df9e0cfa6bc400c84abf331f53 Author: Neil Roberts Date: Thu Jan 29 12:21:56 2009 +0000 [cogl] Add an NULL terminator to the call to material_flush_gl_state This fixes a compiler warning and a potential crash. gl/cogl.c | 2 +- gles/cogl.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 02127858f35d0704cc9e18054e97cc0efe11b196 Author: Robert Bragg Date: Wed Jan 28 14:09:51 2009 +0000 Another Cogl gl vs gles normalizaion pass This tries to make a number of files more comparable with the intention of moving some code into cogl/common/ Files normalized: cogl.c cogl-context.c cogl-context.h cogl-texture.c gl/cogl-context.h | 13 ++-- gl/cogl-texture.c | 33 ++++++-- gl/cogl.c | 43 +++++++-- gles/cogl-context.c | 8 +- gles/cogl-texture.c | 244 +++++++++++++++++++++++++++++---------------------- gles/cogl.c | 26 +++++- 6 files changed, 233 insertions(+), 134 deletions(-) commit b69d49e43c694e9fbd1c617a9620fde508b2c734 Author: Robert Bragg Date: Tue Jan 27 11:07:22 2009 +0000 Removes cogl_color_set_from_4d as it may mislead people. Someone not sure which cogl_color_set_from_* version is "best" may use set_from_4d because taking doubles implies higher precision. Currently it doesn't have any advantage. cogl-color.h | 17 ----------------- common/cogl-color.c | 15 --------------- 2 files changed, 0 insertions(+), 32 deletions(-) commit c4b4500059defee4e74fb355aae698c7dea1e24c Author: Robert Bragg Date: Wed Jan 28 14:47:03 2009 +0000 Changes cogl_rectangle to take x1, y1, x2, y2 args not x1, y1, width, height This makes it consistent with cogl_rectangle_with_{multi,}texture_coords. Notably the reason cogl_rectangle_with_{multi,}texture_coords wasn't changed instead is that the former approach lets you describe back facing rectangles. (though technically you could pass negative width/height values to achieve this; it doesn't seem as neat.) cogl-path.h | 16 ++++++++-------- common/cogl-primitives.c | 13 ++++++------- gl/cogl-primitives.c | 10 ++++++---- gles/cogl-primitives.c | 10 ++++++---- gles/cogl.c | 8 +++++--- 5 files changed, 31 insertions(+), 26 deletions(-) commit 1d86b04e0644db63ac3fe0635667fc3792c4e691 Author: Robert Bragg Date: Wed Jan 28 13:46:39 2009 +0000 Adds some debug code to _cogl_journal_flush_quad_batch The code is #if 0 guarded, but when uncommented it outlines all drawn rectangles with an un-blended red, green or blue border. This may e.g. help with debugging texture slicing issues or blending issues, plus it looks quite cool. gl/cogl-texture.c | 27 +++++++++++++++++++++++++++ 1 files changed, 27 insertions(+), 0 deletions(-) commit 1f473c02e0c8f20523d319581ae5518589d55974 Author: Emmanuele Bassi Date: Wed Jan 28 16:43:05 2009 +0000 [cogl-docs] Add the Materials section The COGL Materials API was not linked from the COGL reference index. doc/reference/cogl/cogl-docs.sgml | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit c4b1e08eef9bf78bc44fe4c261fc0ddfb260bb9f Merge: ba2fd8a 9aedabc Author: Neil Roberts Date: Wed Jan 28 09:08:19 2009 +0000 Merge branch 'scale-center' Bug 1349 - Using the anchor point to set the scale center is messy The branch adds an extra center point for scaling which can be used for example to set a scale about the center without affecting the position of the actor. The scale center can be specified as a unit offset from the origin or as a gravity. If specified as a gravity it will be stored as a fraction of the actor's size so that the position will track when the actor changes size. The anchor point and rotation centers have been modified so they can be set with a gravity in the same way. However, only the Z rotation exposes a property to set using a gravity because the other two require a Z coordinate which doesn't make sense to interpret as a fraction of the actor's width or height. Conflicts: clutter/clutter-actor.c commit ba2fd8a9d354adad35af3e6ab67b9c04f37c2eb1 Author: Neil Roberts Date: Wed Jan 28 12:57:06 2009 +0000 [cogl-texture] Fix order of tex coords when compensating for waste When drawing a texture with waste in _cogl_multitexture_unsliced_quad it scales the texture coordinates so that the waste is not included. However the formula was the wrong way around so it was calculating as if the texture coordinates are ordered x1,x2,y1,y2 but it is actually x1,y1,x2,y2. gl/cogl-texture.c | 4 ++-- gles/cogl-texture.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 954c0853cddab18540e64ac16248de2e108aace4 Author: Neil Roberts Date: Wed Jan 28 12:00:01 2009 +0000 [cogl-texture] Reset size of vertex log after drawing a polygon Otherwise trying to render a rectangle after a polygon doesn't work because it expects the array to be empty when it starts logging vertices. gl/cogl-texture.c | 4 ++++ gles/cogl-texture.c | 4 ++++ 2 files changed, 8 insertions(+), 0 deletions(-) commit e6fb58e12976c10ca0baedeaa341143b3752d6db Author: Neil Roberts Date: Wed Jan 28 11:29:49 2009 +0000 Fix rectangles_with_multitexture_coords for sliced without tex coords When the texture is sliced it drops back to a fallback function and passes it the texture coordinates from the rectangle. However if no tex coords are given it would crash. Now it passes the default 0.0->1.0 tex coords instead. gl/cogl-texture.c | 23 +++++++++++++++-------- gles/cogl-texture.c | 23 +++++++++++++++-------- 2 files changed, 30 insertions(+), 16 deletions(-) commit c18d945dc7dfff1cf2b8f365defc40c64f36e8ab Author: Neil Roberts Date: Wed Jan 28 11:09:47 2009 +0000 Fix _cogl_texture_unsliced_quad when no texture coordinates are given If no texture coordinates are given then texture_unsliced_quad tries to generate its own coordinates. However it also tries to read the texture coordinates to check if they are in [0.0,1.0] range so it will crash before it reaches that. gl/cogl-texture.c | 11 +++++++---- gles/cogl-texture.c | 11 +++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) commit 8dca5c73bcdf949d6e11d4adfd5dc93feca71b8e Author: Emmanuele Bassi Date: Wed Jan 28 11:56:12 2009 +0000 Reuse the layers list Instead of getting the layers list twice from the Material, we can reuse the list when we need to retrieve the first layer. gl/cogl-texture.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 670b35ddf0a3bbe4539a00d123aca002c1316e5d Author: Emmanuele Bassi Date: Wed Jan 28 11:55:19 2009 +0000 Remove gtk-doc annotation The _cogl_material_flush_layers_gl_state() function is static, so it should not have a gtk-doc annotation. common/cogl-material.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 677f4b899b76b6463403dd51dfee2ed9bfeeeaf7 Author: Neil Roberts Date: Wed Jan 28 10:52:55 2009 +0000 Fix building GLES after _cogl_texture_handle_from_pointer got removed Commit a688b1db removed the function and replaced it with a direct cast. This was also being used in the GL ES so the build broke. gles/cogl-texture.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit d6f6c06af555ffeb567551694a32d42d209699c4 Author: Emmanuele Bassi Date: Tue Jan 27 16:53:01 2009 +0000 [docs] Documentation fixes Update the COGL API reference to avoid a lot of warnings coming from gtk-doc. common/cogl-matrix.c | 12 ++++++---- doc/reference/cogl/cogl-sections.txt | 35 ++++++++++++++++++++++++++------- 2 files changed, 34 insertions(+), 13 deletions(-) commit 85f02c2c6a2ca73605e8a1dd598e0b15f03bbfa1 Merge: 31e4ca5 6e2efcd Author: Emmanuele Bassi Date: Tue Jan 27 16:12:30 2009 +0000 Merge branch 'generic-actor-clone' * generic-actor-clone: Remove CloneTexture from the API [tests] Clean up the Clone interactive test Rename ActorClone to Clone/2 Rename ActorClone to Clone/1 Improves the unit test to verify more awkward scaling and some corresponding fixes Implements a generic ClutterActorClone that doesn't need fbos. commit 31e4ca5733a4036c37b70f2e60586d3ddef3fd9e Author: Emmanuele Bassi Date: Tue Jan 27 16:02:04 2009 +0000 Fallout from cogl-material merge When enabling the maintainer CFLAGS the compiler got very angry at the code that has been merged. common/cogl-handle.h | 6 ------ common/cogl-material.c | 13 ++++++------- gl/cogl-context.c | 8 ++++---- gl/cogl-texture.c | 8 +++----- 4 files changed, 13 insertions(+), 22 deletions(-) commit d428c2a2ccaf8d823894b6c1a11d2a1a25347090 Author: Robert Bragg Date: Tue Jan 27 11:01:23 2009 +0000 Adds padding to CoglColor to future proof it a bit This adds enough padding to allow us to change to an internal float storage for the color components if needs be in the future. cogl-types.h | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit a2e52eb3be65338b36dbce026ef0f9c830e3cded Author: Robert Bragg Date: Mon Jan 26 22:52:38 2009 +0000 Support scaling on the z axis with cogl_scale This simply adds a z argument to cogl_scale and updates clutter-actor.c to pass 1.0 for the z scale. cogl.h.in | 8 +++++--- gl/cogl.c | 4 ++-- gles/cogl.c | 4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) commit 323eaf3fb3994eb84376a735b9ab4ca87208f8e7 Merge: 33fe451 9abf44e Author: Robert Bragg Date: Tue Jan 27 15:19:34 2009 +0000 Merge branch 'cogl-material' Conflicts: clutter/cogl/gl/cogl-texture.c clutter/cogl/gles/cogl-primitives.c * cogl-material: clutter-{clone-,}texture weren't updating their material opacity. Updates GLES1 support for CoglMaterial Normalizes gl vs gles code in preperation for synching material changes Removes cogl_blend_func and cogl_alpha_func Fully integrates CoglMaterial throughout the rest of Cogl [cogl-material] Restore the GL_TEXTURE_ENV_MODE after material_rectangle [cogl-material] Make the user_tex_coords parameter of _rectangle const [test-cogl-material] Remove return value from material_rectangle_paint Add cogl-material.h and cogl-matrix.h to libclutterinclude_HEADERS [cogl-material] improvements for cogl_material_rectangle [cogl-material] Adds a cogl_material_set_color function [cogl-material] Some improvements for how we sync CoglMaterial state with OpenGL [cogl-material] Converts clutter-texture/clutter-clone-texture to the material API [doc] Hooks up cogl-material reference documentation Updates previous GLES multi-texturing code to use CoglMaterial Adds a CoglMaterial abstraction, which includes support for multi-texturing [doc] Hooks up cogl-matrix reference documentation Adds CoglMatrix utility code [tests] Adds an interactive unit test for multi-texturing [multi-texturing] This adds a new cogl_multi_texture API for GL,GLES1 + GLES2 commit 9abf44eac312bcc3038e77c060a17af0d51c8ad7 Author: Robert Bragg Date: Mon Jan 26 11:07:35 2009 +0000 Updates GLES1 support for CoglMaterial This updates cogl/gles in line with the integration of CoglMaterial throughout Cogl that has been done for cogl/gl. Note: This is still buggy, but at least it builds again and test-actors works. Some GLES2 specific changes were made, but these haven't been tested yet. common/cogl-material.c | 35 +- gl/cogl-texture.c | 25 +- gles/cogl-context.c | 128 +++- gles/cogl-context.h | 92 ++- gles/cogl-gles2-wrapper.h | 5 + gles/cogl-internal.h | 11 +- gles/cogl-primitives.c | 75 +-- gles/cogl-texture-private.h | 39 +- gles/cogl-texture.c | 1642 +++++++++++++++++++++++++++---------------- gles/cogl.c | 49 +- 10 files changed, 1312 insertions(+), 789 deletions(-) commit e9a9acd28db9331e4b02c4a3721e9e80756b7076 Author: Robert Bragg Date: Sat Jan 24 16:55:04 2009 +0000 Normalizes gl vs gles code in preperation for synching material changes This changes all GLES code to use the OpenGL function names instead of the cogl_wrap_* names. For GLES2 we now define the OpenGL name to point to the wrapper, as opposed to defining the wrapper to point to the OpenGL name for GLES1. I've also done a quick pass through gl/cogl.c and gles/cogl.c to make them more easily comparable. (most of the code is now identical) gl/cogl-primitives.c | 43 ++-- gl/cogl.c | 144 ++++++------- gles/cogl-context.c | 2 +- gles/cogl-fbo.c | 32 ++-- gles/cogl-primitives.c | 34 ++-- gles/cogl-texture.c | 585 +++++++++++++++++++++++------------------------- gles/cogl.c | 286 +++++++++++++----------- 7 files changed, 561 insertions(+), 565 deletions(-) commit 94077997a767de39fc9b2bc088e27054a5d73c4a Author: Robert Bragg Date: Sat Jan 24 15:09:43 2009 +0000 Removes cogl_blend_func and cogl_alpha_func The GL blend function and alpha function are now controlled by the material code, and even internally Cogl should now be using the material API when it needs control of these. cogl.h.in | 13 ------------- common/cogl-material.c | 8 ++++++++ gl/cogl-context.c | 3 --- gl/cogl-context.h | 2 -- gl/cogl.c | 24 ------------------------ gles/cogl.c | 24 ------------------------ 6 files changed, 8 insertions(+), 66 deletions(-) commit 2503f7b32190312a7ded7d7ae227ee5e01e298c3 Author: Robert Bragg Date: Fri Jan 23 16:15:40 2009 +0000 Fully integrates CoglMaterial throughout the rest of Cogl This glues CoglMaterial in as the fundamental way that Cogl describes how to fill in geometry. It adds cogl_set_source (), which is used to set the material which will be used by all subsequent drawing functions It adds cogl_set_source_texture as a convenience for setting up a default material with a single texture layer, and cogl_set_source_color is now also a convenience for setting up a material with a solid fill. "drawing functions" include, cogl_rectangle, cogl_texture_rectangle, cogl_texture_multiple_rectangles, cogl_texture_polygon (though the cogl_texture_* funcs have been renamed; see below for details), cogl_path_fill/stroke and cogl_vertex_buffer_draw*. cogl_texture_rectangle, cogl_texture_multiple_rectangles and cogl_texture_polygon no longer take a texture handle; instead the current source material is referenced. The functions have also been renamed to: cogl_rectangle_with_texture_coords, cogl_rectangles_with_texture_coords and cogl_polygon respectivly. Most code that previously did: cogl_texture_rectangle (tex_handle, x, y,...); needs to be changed to now do: cogl_set_source_texture (tex_handle); cogl_rectangle_with_texture_coords (x, y,....); In the less likely case where you were blending your source texture with a color like: cogl_set_source_color4ub (r,g,b,a); /* where r,g,b,a isn't just white */ cogl_texture_rectangle (tex_handle, x, y,...); you will need your own material to do that: mat = cogl_material_new (); cogl_material_set_color4ub (r,g,b,a); cogl_material_set_layer (mat, 0, tex_handle)); cogl_set_source_material (mat); Code that uses the texture coordinates, 0, 0, 1, 1 don't need to use cog_rectangle_with_texure_coords since these are the coordinates that cogl_rectangle will use. For cogl_texture_polygon; as well as dropping the texture handle, the n_vertices and vertices arguments were transposed for consistency. So code previously written as: cogl_texture_polygon (tex_handle, 3, verts, TRUE); need to be written as: cogl_set_source_texture (tex_handle); cogl_polygon (verts, 3, TRUE); All of the unit tests have been updated to now use the material API and test-cogl-material has been renamed to test-cogl-multitexture since any textured quad is now technically a test of CoglMaterial but this test specifically creates a material with multiple texture layers. Note: The GLES backend has not been updated yet; that will be done in a following commit. cogl-material.h | 169 +++++- cogl-path.h | 3 +- cogl-texture.h | 185 +++--- cogl.h.in | 2 +- common/cogl-material-private.h | 31 +- common/cogl-material.c | 619 +++++++++++++++---- common/cogl-primitives.c | 13 +- common/cogl-vertex-buffer.c | 80 ++- gl/cogl-context.c | 89 ++- gl/cogl-context.h | 44 +- gl/cogl-internal.h | 11 +- gl/cogl-primitives.c | 50 +- gl/cogl-texture-private.h | 39 +- gl/cogl-texture.c | 1374 +++++++++++++++++++++++++--------------- gl/cogl.c | 128 ++--- 15 files changed, 1917 insertions(+), 920 deletions(-) commit 33fe4518b0d2b04f81c2aaecf5ae5adc51c8af97 Author: Neil Roberts Date: Sat Jan 24 00:25:24 2009 +0000 Fix the Cogl primitives for the GLES backend The Cogl primitives broke for GLES 1.1 and 2 after the cogl-float branch merge. CoglPathNode was still being declared as GLfixed for the GLES backend but it was being filled with float values so they were all ending up as numbers < 1. glDrawArrays was being called with GL_FIXED so this has been changed to GL_FLOAT. The scanline rasterizer had a leftover hardcoded ClutterFixed constant to add a small amount to the height of each line. struct _CoglFloatVec2 has been removed because it is no longer used anywhere. common/cogl-primitives.h | 21 --------------------- gles/cogl-primitives.c | 14 +++++++------- 2 files changed, 7 insertions(+), 28 deletions(-) commit 0c8c273980fc0dc92b651d4a0df4804be43b6dba Merge: a0c5690 7031791 Author: Robert Bragg Date: Fri Jan 23 15:23:49 2009 +0000 Merge commit 'origin/master' into cogl-material Conflicts: clutter/clutter-texture.c clutter/cogl/cogl-texture.h clutter/cogl/cogl.h.in clutter/cogl/common/Makefile.am clutter/cogl/gl/Makefile.am clutter/cogl/gles/Makefile.am clutter/cogl/gles/cogl-gles2-wrapper.c clutter/cogl/gles/cogl-gles2-wrapper.h commit 9aedabc6a77f3c7271f859b84bc9fd484f9e8dad Author: Emmanuele Bassi Date: Fri Jan 23 13:09:51 2009 +0000 Split maintainer-flags from the compiler flags The maintainer compiler flags we use trigger warnings and errors in the autogenerated code that gtk-doc creates to scan the header and source files. Since we cannot control that, and we must run a distcheck with both --enable-gtk-doc and --enable-maintainer-flags turned on, we need to use less-strict compiler flags when inside the doc/reference subdirectories. The way to do this is to split the maintainer compiler flags into their own Makefile variable, called MAINTAINER_CFLAGS. The we can use $(MAINTAINER_CFLAGS) in the INCLUDES or _CFLAGS sections of each part of the source directories we wish to check with the anal retentiveness suited for maintainers. common/Makefile.am | 1 + gl/Makefile.am | 1 + gles/Makefile.am | 1 + 3 files changed, 3 insertions(+), 0 deletions(-) commit 726ee43761abc4d77c8b3f894b19f8bbe1f4f2c0 Author: Emmanuele Bassi Date: Fri Jan 23 13:08:46 2009 +0000 Fix compiler warnings The maintainer-flags option discovered the usual amount of collisions and compiler warnings we have to fix in order to get distcheck to pass. common/cogl-primitives.c | 100 +++++++++--------- gl/cogl-texture.c | 247 ++++++++++++++++++++++++---------------------- 2 files changed, 180 insertions(+), 167 deletions(-) commit 20b5eecbd9b62a71c0f2e2e9a483f4bb0bccebf3 Merge: 7031791 6e2efcd Author: Emmanuele Bassi Date: Fri Jan 23 12:10:50 2009 +0000 Merge branch 'float-alpha-value' * float-alpha-value: [script] Parse easing modes by name [docs] Update the easing modes documentation [animation] Implement new easing functions [animation] Move the alpha value to floating point commit 7031791376ddd98c7c1358d07b12871be14bd6c8 Author: Neil Roberts Date: Thu Jan 22 17:42:26 2009 +0000 Fix some failures from the fixed-to-float script in cogl-texture The script converted calls to COGL_FIXED_MUL(x,y) to (x*y). However this fails for cases like this: COGL_FIXED_MUL(a + b, c) which become (a + b * c) The meaning of this is of course different because multiplication has a higher precedence than addition. This was causing breakages in cogl_texture_quad_sw when the vertex coordinates are not in increasing order. This was the case in test-backface-culling when NPOTs are not available. gl/cogl-texture.c | 20 ++++++++------------ gles/cogl-texture.c | 20 ++++++++------------ 2 files changed, 16 insertions(+), 24 deletions(-) commit 7b173b9e248e2bce3189b79b887b23a1fb64f01b Author: Emmanuele Bassi Date: Thu Jan 22 15:59:23 2009 +0000 Improve accuracy of clutter_sinx() Improve clutter_sinx() by replacing the low precision CFX_SIN_STEP with a multiply/divide pair. This reduces the maximum error from 1.8e-04 to 2.4e-05. http://bugzilla.openedhand.com/show_bug.cgi?id=1314 Based on a patch by Owen W. Taylor common/cogl-fixed.c | 36 +++++++++++++++++++++++------------- 1 files changed, 23 insertions(+), 13 deletions(-) commit 27dd2f8319579988faa558217ea35a4947e191ef Author: Emmanuele Bassi Date: Thu Jan 22 14:52:34 2009 +0000 [gles] Fix computation of camera distance Port the fix in commit f409b58e to the GLES implementation of COGL. gles/cogl.c | 21 +++++++-------------- 1 files changed, 7 insertions(+), 14 deletions(-) commit 66331b686346ae751d5b5028a9c2aee0db287aec Author: Owen W. Taylor Date: Thu Jan 22 14:17:16 2009 +0000 Fix computation of camera distance Compute the value of the camera distance as exactly half the xx component of the projection matrix. The heuristically derived value for 60 degrees was off by about 0.016%, causing noticeable blurring, and other field of view angles which didn't have the heuristic adjustment off by much more. Signed-off-by: Emmanuele Bassi gl/cogl.c | 58 ++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 38 insertions(+), 20 deletions(-) commit dcbb0833c1f9b8e9cd6d1156e6264d343ab1892d Author: Emmanuele Bassi Date: Wed Jan 21 16:41:18 2009 +0000 [docs] Remove sources of warnings in API references cogl-texture.h | 2 +- cogl-vertex-buffer.h | 4 +- doc/reference/cogl/cogl-docs.sgml | 2 +- doc/reference/cogl/cogl-sections.txt | 50 ++++++++++++++++++++++----------- 4 files changed, 37 insertions(+), 21 deletions(-) commit 16ad994dfaee5e7d5413fb67810daf6554086956 Author: Emmanuele Bassi Date: Wed Jan 21 10:59:19 2009 +0000 [docs] Add CoglTextureFlags to the API reference doc/reference/cogl/cogl-sections.txt | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 799fdf364e7f3b26f9bc27b7f16e052c38106016 Author: Emmanuele Bassi Date: Sun Jan 18 14:51:19 2009 +0000 Change the COGL texture constructor to use flags Boolean arguments for functions are pretty evil and usually lead to combinatorial explosion of parameters in case multiple settings are added. In the case of the COGL texture constructors we have a boolean argument for enabling the auto-mipmapping; it is conceivable that we might want to add more settings for a COGL texture without breaking API or ABI compatibility, so the boolean argument should become a bitmask. The internals have not been changed: instead of checking for a non-zero value, we check for a bitmask being set. cogl-texture.h | 139 +++++++++++++++++++++++++++------------------------ cogl-types.h | 15 ++++++ gl/cogl-texture.c | 52 ++++++++++---------- gles/cogl-texture.c | 52 ++++++++++---------- 4 files changed, 140 insertions(+), 118 deletions(-) commit de41fdd9d128325c243715ae7ddea219587163a5 Author: Robert Bragg Date: Tue Jan 20 21:12:44 2009 +0000 Renames the mesh api to the "vertex buffer api". This better reflects the fact that the api manages sets of vertex attributes, and the attributes really have no implied form. It is only when you use the attributes to draw that they become mesh like; when you specify how they should be interpreted, e.g. as triangle lists or fans etc. This rename frees up the term "mesh", which can later be applied to a concept slightly more fitting. E.g. at some point it would be nice to have a higher level abstraction that sits on top of cogl vertex buffers that adds the concept of faces. (Somthing like Blender's mesh objects.) There have also been some discussions over particle engines, and these can be defined in terms of emitter faces; so some other kind of mesh abstraction might be usefull here. cogl-mesh.h | 299 ------- cogl-vertex-buffer.h | 308 +++++++ cogl.h.in | 2 +- common/Makefile.am | 3 +- common/cogl-mesh-private.h | 143 --- common/cogl-mesh.c | 1618 --------------------------------- common/cogl-vertex-buffer-private.h | 142 +++ common/cogl-vertex-buffer.c | 1633 ++++++++++++++++++++++++++++++++++ doc/reference/cogl/cogl-docs.sgml | 2 +- doc/reference/cogl/cogl-sections.txt | 25 +- gl/Makefile.am | 2 +- gl/cogl-context.c | 2 +- gl/cogl-context.h | 4 +- gles/Makefile.am | 2 +- gles/cogl-context.c | 2 +- gles/cogl-context.h | 4 +- 16 files changed, 2107 insertions(+), 2084 deletions(-) commit e9537c749f9fe30f8796b878bb7f74a9d230ce54 Merge: 6e2efcd 4e60f2f Author: Robert Bragg Date: Tue Jan 20 17:22:21 2009 +0000 Merge branch 'cogl-float' Okey; to summarise the changes... We have converted Clutter and Cogl over to using floating point internally instead of 16.16 fixed, but we have maintained the cogl-fixed API as a utility to applications in case they want to implement their own optimizations. The Clutter API has not changed (though ClutterFixed and ClutterUnit are now internally floats) but all Cogl entry points have been changed to accept floats now instead of CoglFixed. To summarise the rationale... There have been a number of issues with using fixed point though out Clutter and Cogl including: lack of precision, lack of range, excessive format conversion (GPUs tend to work nativly with IEEE floats) and maintainability. One of the main arguments for fixed point - performance - hasn't shown itself to be serious in practice so far since we seem to be more limited by GPU performance and making improvements regarding how we submit data to OpenGL[ES]/the GPU has had a more significant impact. Ref: The recent multiple rectangle queuing changes + the cogl-texture-agressive-batching branch which show significant performance gains, and that recent tests on the ipodtouch (ARM + MBX) also showed no loss of performance running with floats. So finally; please forgive the inevitable fallout, this is a far reaching change. There are still a few known issues with the fixed to float conversion but enough works for all our conformance tests to pass, and the remaining issues hopefully wont be too tricky to solve. For reference two tags will be available either side of this change: "cogl-fixed-end" and "cogl-float-start" commit 4e60f2f5b005cf9a87a011459f51596d755fff8e Author: Robert Bragg Date: Tue Jan 20 16:20:54 2009 +0000 [Automatic fixed-to-float.sh change] Applies a number fixed to float patches To deal with all the corner cases that couldn't be scripted a number of patches were written for the remaining 10% of the effort. Note: again no API changes were made in Clutter, only in Cogl. cogl-color.h | 10 ++-- cogl-fixed.h | 12 ++++ cogl-path.h | 22 +------ cogl.h.in | 50 +++------------ common/cogl-color.c | 6 +- common/cogl-fixed.c | 6 ++ common/cogl-primitives.c | 33 +++------- doc/reference/cogl/cogl-sections.txt | 4 +- gl/cogl-primitives.c | 63 +++++++------------ gl/cogl-texture.c | 5 +- gl/cogl.c | 113 ++++++---------------------------- gles/cogl-gles2-wrapper.c | 45 +++----------- gles/cogl-gles2-wrapper.h | 31 ++++----- gles/cogl-primitives.c | 92 +++++++++------------------- gles/cogl-texture.c | 5 +- gles/cogl.c | 70 +++++++-------------- 16 files changed, 171 insertions(+), 396 deletions(-) commit 3336359abbb44d2ffad9daaec02266e6c42847d6 Author: Robert Bragg Date: Tue Jan 20 16:20:54 2009 +0000 [Automatic fixed-to-float.sh change] Applies all scripted changes This is the result of running a number of sed and perl scripts over the code to do 90% of the work in converting from 16.16 fixed to single precision floating point. Note: A pristine cogl-fixed.c has been maintained as a standalone utility API so that applications may still take advantage of fixed point if they desire for certain optimisations where lower precision may be acceptable. Note: no API changes were made in Clutter, only in Cogl. Overview of changes: - Within clutter/* all usage of the COGL_FIXED_ macros have been changed to use the CLUTTER_FIXED_ macros. - Within cogl/* all usage of the COGL_FIXED_ macros have been completly stripped and expanded into code that works with single precision floats instead. - Uses of cogl_fixed_* have been replaced with single precision math.h alternatives. - Uses of COGL_ANGLE_* and cogl_angle_* have been replaced so we use a float for angles and math.h replacements. cogl-color.h | 50 ++++---- cogl-path.h | 100 ++++++++-------- cogl-texture.h | 20 ++-- cogl-types.h | 4 +- cogl.h.in | 68 +++++----- common/cogl-clip-stack.c | 46 ++++---- common/cogl-color.c | 40 +++--- common/cogl-primitives.c | 292 ++++++++++++++++++++++----------------------- common/cogl-primitives.h | 22 ++-- gl/cogl-context.h | 8 +- gl/cogl-primitives.c | 44 ++++---- gl/cogl-texture.c | 226 +++++++++++++++++----------------- gl/cogl.c | 290 ++++++++++++++++++++++---------------------- gles/cogl-context.c | 2 +- gles/cogl-context.h | 10 +- gles/cogl-fbo.c | 12 +- gles/cogl-gles2-wrapper.c | 126 ++++++++++---------- gles/cogl-gles2-wrapper.h | 54 ++++---- gles/cogl-primitives.c | 70 ++++++------ gles/cogl-texture.c | 240 ++++++++++++++++++------------------ gles/cogl.c | 256 ++++++++++++++++++++-------------------- 21 files changed, 987 insertions(+), 993 deletions(-) commit 53ba8bd92c17ae95c31570aab50a5492fce720d5 Author: Neil Roberts Date: Fri Jan 16 10:50:53 2009 +0000 [fixed-to-float-patches] Move the changes to gles2-wrapper.h into the patch It looks like the changes to cogl-gles2-wrapper.h were accidentally committed to the actual file instead of the patch in commit de27da0e. This commit moves the changes back into the patch so cogl-gles2-wrapper.h is reverted back to master. gles/cogl-gles2-wrapper.h | 24 ++++++++++++------------ 1 files changed, 12 insertions(+), 12 deletions(-) commit eea3d2ce7c7d7540366a77508ac32c90862d13b3 Merge: eb8ce66 6e2efcd Author: Neil Roberts Date: Thu Jan 15 16:38:49 2009 +0000 Merge branch 'master' into cogl-float The patches have been updated to apply cleanly. The patches for the g_warnings in clutter-actor.c have been removed because master now uses CLUTTER_UNITS_FORMAT so they aren't necessary. The clutter-units.h patch now sets CLUTTER_UNITS_FORMAT to 'f'. commit 6e2efcd45bbf87be307350781713c9b815c28936 Author: Neil Roberts Date: Thu Jan 15 18:09:54 2009 +0000 Fix GLES backends after merging the async-textures branch The changes from the GL version of cogl-texture.c have been mirrored in the GLES version. This adds the cogl_texture_new_from_bitmap function and fixes the build errors. gles/cogl-texture.c | 52 +++++++++++++++++++++++++++++--------------------- 1 files changed, 30 insertions(+), 22 deletions(-) commit 9ec4c29003578f8b1aadef732ea4cf7e53fb49db Merge: cc1cb6a c78d963 Author: Emmanuele Bassi Date: Wed Jan 14 15:16:41 2009 +0000 Merge branch 'async-textures' * async-textures: Whitespace fixes in ClutterTexture [async-loading] Do not force the texture size on async load [async-loading] Update asynchronous image loading Add API for extracting image size from a file Update/clean and apply the async-texture patch from bug #1144 commit cc1cb6ab36c0ce12eee2dee0fa63806776f7b9c2 Merge: 7223b0a 5dc2b7d Author: Emmanuele Bassi Date: Wed Jan 14 15:00:44 2009 +0000 Merge branch 'animation-improvements' * animation-improvements: [docs] Add ClutterAnimatable to the API reference Add license notice to ClutterAnimation files [docs] Update the ClutterAnimation section [animation] Extend ClutterAnimation support to all objects [animation] Use ClutterAnimatable inside Animation [animation] Add ClutterAnimatable [animation] Allow registering custom progress function [animation] Interval::compute_value should return a boolean Animate ClutterColor properties commit 7223b0a1a535730bdc7bb63db5072a3e3ee0638f Author: Neil Roberts Date: Thu Nov 27 16:44:39 2008 +0000 Fix GLES 2 after the multiple-texture-rectangle branch merge The GLES 2 wrapper needs to set up some state before each draw. Previously this was acheived by wrapping glDrawArrays. Since the multiple-texture-rectangle branch merge, glDrawElements is used instead so we also need a wrapper for that. It was also directly calling glBindTexture. GLES 2 uses a wrapper for this function so that it can cope with GL_ALPHA format textures. The format of the current texture needs to be stored as well as the target and object number for this to work. gles/cogl-context.h | 1 + gles/cogl-gles2-wrapper.c | 20 ++++++++++++++++++-- gles/cogl-gles2-wrapper.h | 4 +++- gles/cogl-texture.c | 7 ++++++- 4 files changed, 28 insertions(+), 4 deletions(-) commit 763d63b74880e2964e8bd0d761900a9a92883afd Author: Neil Roberts Date: Mon Jan 12 18:32:49 2009 +0000 Update gtk-doc 'Since' field for cogl_texture_multiple_rectangles The function has been backported to the 0.8 branch so it will also be available in Clutter 0.8.6 cogl-texture.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit a0c5690d55cee4be78c317f37885974cfc3594b5 Merge: b6470ab 0ca5eea Author: Robert Bragg Date: Tue Jan 13 13:37:38 2009 +0000 Merge commit 'origin/master' into cogl-material Conflicts: clutter/clutter-texture.c clutter/cogl/cogl-texture.h clutter/cogl/gles/cogl-context.c clutter/cogl/gles/cogl-context.h commit eb8ce66e617ce5895cb3c6dfe2a1a68effe654af Author: Robert Bragg Date: Thu Jan 8 22:56:17 2009 +0000 [cogl/gles] Fixes for building for GLES 1 using floats * This adds GLfixed -> GLfloat conversion * redefines cogl_wrap_glBlahx macros as glBlahf * Other misc fixes (mostly corresponding to cogl/gl equivalents) gles/cogl-gles2-wrapper.h | 24 ++++++++++++------------ 1 files changed, 12 insertions(+), 12 deletions(-) commit c78d963e90120dc48c5c862047c2d6aa7165010a Author: Emmanuele Bassi Date: Mon Jan 12 16:52:20 2009 +0000 Add API for extracting image size from a file For the asynchronous loading we need a function call that parses a file, given its path, and retrieves the image width and height. This commit adds cogl_bitmap_get_size_from_file() to the CoglBitmap API. cogl-texture.h | 17 +++++++++++ common/cogl-bitmap-pixbuf.c | 65 +++++++++++++++++++++++++++++++++++++------ common/cogl-bitmap.c | 8 +++++ common/cogl-bitmap.h | 5 +++ 4 files changed, 86 insertions(+), 9 deletions(-) commit 743b5c03dc6a96395268b353e79d64b743e3e10e Merge: 0866b07 0ca5eea Author: Emmanuele Bassi Date: Mon Jan 12 14:43:53 2009 +0000 Merge branch 'master' into async-textures commit 0ca5eeaeae305c97eb3bcbc4d1d7c8ce09518879 Author: Emmanuele Bassi Date: Mon Jan 12 11:21:06 2009 +0000 Declare G_LOG_DOMAIN for COGL In order to get properly namespaced debug and warning messages inside COGL code we need to define the G_LOG_DOMAIN macro. common/Makefile.am | 1 + gl/Makefile.am | 1 + gles/Makefile.am | 1 + 3 files changed, 3 insertions(+), 0 deletions(-) commit 918794a256f7588e73969ea86948d61a5747e004 Author: Emmanuele Bassi Date: Fri Jan 9 14:26:35 2009 +0000 [docs] Documentation warnings Fix the various warnings issued by gtk-doc when enabling the API reference generation for both COGL and Clutter. cogl-types.h | 72 ++++++++++++++++++++++++++++----------------------- common/cogl-mesh.c | 2 + 2 files changed, 41 insertions(+), 33 deletions(-) commit 5dc2b7d5f338f26c12af32bd37cd21be74a5838a Author: Emmanuele Bassi Date: Thu Jan 8 13:38:51 2009 +0000 Merge branch 'animatable-iface' into animation-improvements * animatable-iface: [docs] Add ClutterAnimatable to the API reference Add license notice to ClutterAnimation files [animation] Use ClutterAnimatable inside Animation [animation] Add ClutterAnimatable commit 755f3935f37025a940647248f7697948218ceaa7 Merge: b443814 1530be0 Author: Robert Bragg Date: Thu Jan 8 11:48:00 2009 +0000 Merge branch 'master' into cogl-float commit 0866b07f30f2d7646e53b6035722e883ccbb9bd6 Author: Chris Lord Date: Wed Jan 7 17:02:43 2009 +0000 Update/clean and apply the async-texture patch from bug #1144 cogl-texture.h | 42 ++++++++++++++++++++++++++++++++++++++++ cogl-types.h | 7 ++++++ common/cogl-bitmap.c | 31 +++++++++++++++++++++++++++++ common/cogl-bitmap.h | 2 - gl/cogl-texture.c | 52 ++++++++++++++++++++++++++++--------------------- 5 files changed, 110 insertions(+), 24 deletions(-) commit 1530be0af949298e22c8040bbeb15e2edeb65bdf Merge: df3667d c3e4c6d Author: Neil Roberts Date: Wed Jan 7 16:10:25 2009 +0000 Merge branch multiple-texture-rectangle into master Bug 1289 - Draw multiple glyphs at once The multiple-texture-rectangle branch adds a new Cogl texture function called cogl_texture_multiple_rectangles which is used to draw multiple rectangles out of a texture using a single GL call. This is significantly faster than drawing the rectangles with individual calls on some platforms. The Pango renderer now uses this to speed up rendering. The conflicts are just due to the whitespace fixes in cb569a5. Conflicts: clutter/cogl/gl/cogl-context.c clutter/cogl/gl/cogl-context.h clutter/cogl/gl/cogl-texture.c commit df3667dd3a6c8bf28090def0bc633ae73f6fc22d Merge: e06f170 4aea0d6 Author: Emmanuele Bassi Date: Wed Jan 7 12:06:33 2009 +0000 Merge the ClutterText actor Merge branch 'text-actor' * text-actor: (108 commits) Re-align ClutterText header file [text] Fix cursor sizing Comments and whitespace fixes to ClutterText [docs] Add newly added :single-line-mode accessors Update the ignore file [tests] Add text field interactive test [text] Add single-line-mode to ClutterText [text] Fix the deletion actions [text] Use cached length when possible [tests] Add unit for the ClutterText:password-char property [docs] Update the Text section [text] Coalesce text visibility and password character Allow localizations to change the text direction Clean up the update_pango_context() function Pass the PangoContext, not the MainContext Revert the logic of the PangoContext check Remove the binding pool entry from the list Remove BindingPool::list_actions() Add ClutterActor::create_pango_context() Rename the PangoContext creation functions ... commit b6470ab900f42af1c778a7d77cc2de988825f756 Author: Neil Roberts Date: Tue Jan 6 18:24:57 2009 +0000 [cogl-material] Restore the GL_TEXTURE_ENV_MODE after material_rectangle The rest of Cogl expects the texture mode to be GL_MODULATE so it needs to be restored after calling cogl_material_rectangle. Otherwise cogl_texture_rectangle will fail to blend with the Cogl color properly and all of the labels will be black. gl/cogl-texture.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit cd71b91440f53618e5ad2db7618a0c36466ac4ea Author: Neil Roberts Date: Tue Jan 6 16:09:55 2009 +0000 [cogl-material] Make the user_tex_coords parameter of _rectangle const The array is only used for input so it should be const. cogl-texture.h | 12 ++++++------ gl/cogl-texture.c | 14 +++++++------- gles/cogl-texture.c | 12 ++++++------ 3 files changed, 19 insertions(+), 19 deletions(-) commit ba2257973eeb7114368e819a2bf4fdff606ba610 Author: Neil Roberts Date: Tue Jan 6 15:53:35 2009 +0000 Add cogl-material.h and cogl-matrix.h to libclutterinclude_HEADERS Otherwise they won't get installed gl/Makefile.am | 4 +++- gles/Makefile.am | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) commit e06f170c0854bed998bf413a3a784e19f9c7be45 Merge: baa63b7 4aea0d6 Author: Emmanuele Bassi Date: Mon Jan 5 11:11:10 2009 +0000 Merge branch 'units-rework' * units-rework: [texture] Do not mix fixed point and units values [tests] Fix the actor detection [units] Do not use fixed point and units interchangeably commit 0408a5d2c5d01035155dcd0cc0529e074361eb8a Author: Robert Bragg Date: Tue Dec 23 23:50:02 2008 +0000 [cogl-material] improvements for cogl_material_rectangle The API has been changed to take an explicit length for the number of texture coordinates passed, and it's now documented that if there are more layers to the current material than the number of texture coords passed, then default coordinates will be generated for the other layers. cogl_material_rectangle should now handle the case where a single sliced texture is supplied as a material layer by falling back to cogl_texture_rectangle. We are nearly at the point that cogl_texture_rectangle could be deprecated. A few issues remain though, such as not considering waste in cogl_material_rectangle. cogl-texture.h | 75 +++++++++---------------------- common/cogl-material-private.h | 14 ++++-- gl/cogl-texture.c | 95 +++++++++++++++++++++++++++++++-------- 3 files changed, 106 insertions(+), 78 deletions(-) commit 98bd85afaa8c79f9b20536b3f406bf55e5176840 Author: Robert Bragg Date: Tue Dec 23 23:35:49 2008 +0000 [cogl-material] Adds a cogl_material_set_color function The other colors of a material; such as the ambient and diffuse color are only relevent when we can enable lighting. This adds a basic unlit color property. Later cogl_set_source_color can be integrated to either modify the color of the current source material, or maintain a special singlton CoglMaterial that is modified by calls to cogl_set_source_color and implicitly made current. cogl-material.h | 13 +++++++++++++ common/cogl-material.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 0 deletions(-) commit e4548bcdc59cf0720227fbc87ce1b48eb63fb003 Author: Robert Bragg Date: Tue Dec 23 23:22:40 2008 +0000 [cogl-material] Some improvements for how we sync CoglMaterial state with OpenGL This flattens the three functions: cogl_material_flush_gl_material_state, .._flush_gl_alpha_func and .._flush_gl_blend_func into one: cogl_flush_material_gl_state which doesn't takes a material handle. (the handle is instead taken from the context.) This has allows us to avoid re-submitting some state to OpenGL when the material has not been replaced. Note: Avoiding redundant state changes for material layers isn't dealt with in this patch. cogl-material.h | 72 ++++++++++++++---------------- common/cogl-material.c | 116 +++++++++++++++++++++++++----------------------- gl/cogl-context.c | 1 + gl/cogl-context.h | 1 + gl/cogl-texture.c | 5 +- 5 files changed, 97 insertions(+), 98 deletions(-) commit ef992f55db9bb29667ccdd966019195cdb921730 Merge: 5b61106 baa63b7 Author: Robert Bragg Date: Wed Dec 24 00:59:13 2008 +0000 Merge branch 'master' into cogl-material Conflicts: clutter/cogl/gl/cogl-context.c clutter/cogl/gl/cogl-context.h commit baa63b7c466397fd9d9e73e3b50399e22a2131f4 Author: Robert Bragg Date: Tue Dec 23 16:29:29 2008 +0000 White space clean up across a number of files (only removing trailing spaces) Removed trailing white space from the following files: - clutter-clone-texture.c - clutter-texture.c - clutter-texture.h - cogl/cogl-texture.h - cogl/gl/cogl-context.c - cogl/gl/cogl-texture.c - cogl/gl/cogl-context.h cogl-texture.h | 24 ++-- gl/cogl-context.c | 26 ++-- gl/cogl-context.h | 16 +- gl/cogl-texture.c | 512 ++++++++++++++++++++++++++-------------------------- 4 files changed, 289 insertions(+), 289 deletions(-) commit 5b61106684b931fba630993f859119a8632effde Author: Robert Bragg Date: Mon Dec 22 16:19:49 2008 +0000 [doc] Hooks up cogl-material reference documentation Adds some more gtk-doc comments to cogl-material.h, and adds a new section to cogl-sections.txt cogl-material.h | 548 +++++++++++++++++++++++----------- common/cogl-material.c | 72 +++--- doc/reference/cogl/cogl-docs.sgml | 1 + doc/reference/cogl/cogl-sections.txt | 38 +++ 4 files changed, 456 insertions(+), 203 deletions(-) commit 1a8a9c4bc882a03074db782b54dc2ef8b2da21be Author: Robert Bragg Date: Thu Dec 18 19:12:09 2008 +0000 Updates previous GLES multi-texturing code to use CoglMaterial test-cogl-material now runs on GLES 1 using the PVR GLES1 SDK (though since only 2 texture units are supported the third rotating light map doesn't show) Note: It currently doesn't build for GLES 2.0 cogl-material.h | 2 + gles/cogl-context.c | 5 +- gles/cogl-context.h | 9 +- gles/cogl-texture.c | 320 ++++++++++++++++++--------------------------------- 4 files changed, 122 insertions(+), 214 deletions(-) commit 61b8cc1874ebd5a25d6ffb49bf67c0aa29afb679 Author: Robert Bragg Date: Thu Dec 11 20:11:30 2008 +0000 Adds a CoglMaterial abstraction, which includes support for multi-texturing My previous work to provide muti-texturing support has been extended into a CoglMaterial abstraction that adds control over the texture combine functions (controlling how multiple texture layers are blended together), the gl blend function (used for blending the final primitive with the framebuffer), the alpha function (used to discard fragments based on their alpha channel), describing attributes such as a diffuse, ambient and specular color (for use with the standard OpenGL lighting model), and per layer rotations. (utilizing the new CoglMatrix utility API) For now the only way this abstraction is exposed is via a new cogl_material_rectangle function, that is similar to cogl_texture_rectangle but doesn't take a texture handle (the source material is pulled from the context), and the array of texture coordinates is extended to be able to supply coordinates for each layer. Note: this function doesn't support sliced textures; supporting sliced textures is a non trivial problem, considering the ability to rotate layers. Note: cogl_material_rectangle, has quite a few workarounds, for a number of other limitations within Cogl a.t.m. Note: The GLES1/2 multi-texturing support has yet to be updated to use the material abstraction. cogl-material.h | 481 ++++++++++++++++++++++++++++ cogl.h.in | 2 + common/Makefile.am | 3 +- common/cogl-material-private.h | 72 +++++ common/cogl-material.c | 680 ++++++++++++++++++++++++++++++++++++++++ common/cogl-matrix.h | 57 ---- gl/cogl-context.c | 5 +- gl/cogl-context.h | 9 +- gl/cogl-texture-private.h | 8 +- gl/cogl-texture.c | 307 +++++++------------ 10 files changed, 1354 insertions(+), 270 deletions(-) commit cdf19f3281c92cb3cd46df165f8f15153ac1aa0f Author: Robert Bragg Date: Mon Dec 22 16:16:07 2008 +0000 [doc] Hooks up cogl-matrix reference documentation Adds a few more gtk-doc notes to cogl-matrix.h, and adds a new section to cogl-sections.txt cogl-matrix.h | 54 ++++++++++++++++++++++++++++++--- doc/reference/cogl/cogl-docs.sgml | 1 + doc/reference/cogl/cogl-sections.txt | 11 +++++++ 3 files changed, 61 insertions(+), 5 deletions(-) commit af6c78e9b43a4739a39bbc4c740c2563af8a116a Author: Robert Bragg Date: Thu Dec 11 20:08:15 2008 +0000 Adds CoglMatrix utility code cogl-matrix.h | 102 +++++++++++++++++++++++++++++++++++++ common/Makefile.am | 3 +- common/cogl-matrix.c | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++ common/cogl-matrix.h | 57 +++++++++++++++++++++ 4 files changed, 299 insertions(+), 1 deletions(-) commit 509928cc76e8e35e51eae8d6db10fe5763e40e4f Author: Robert Bragg Date: Thu Dec 11 15:33:38 2008 +0000 [multi-texturing] This adds a new cogl_multi_texture API for GL,GLES1 + GLES2 Multitexturing allows blending multiple layers of texture data when texturing some geometry. A common use is for pre-baked light maps which can give nice lighting effects relativly cheaply. Another is for dot-3 bump mapping, and another is applying alpha channel masks. The dot-3 bump mapping would be really nice one day, but currently cogl doesn't support lighting so that's not dealt with in this patch. notable limitations: - It can only texture rectangles a.t.m - and like cogl_texture_rectangle there is no support for rotated texturing. - Sliced textures are not supported. I think I've figured out how to handle layers with different slice sizes at least for rectangular geometry, but I'm not sure how complex it becomes once rotations are possible and texturing arbitrary cogl_polygons. - Except for this new API, cogl still doesn't know about more than one texture unit, and so has no way of caching any enables related to other units. So that things don't break it's currently necessary to disable anything to do with additional units as soon as we are done with them which isn't ideal. - No clutter API yet. cogl-texture.h | 62 ++++ common/cogl-handle.h | 6 + gl/cogl-context.c | 3 + gl/cogl-context.h | 6 + gl/cogl-defines.h.in | 1 + gl/cogl-texture-private.h | 27 ++- gl/cogl-texture.c | 275 +++++++++++++++++- gles/cogl-context.c | 4 +- gles/cogl-context.h | 6 + gles/cogl-defines.h.in | 12 +- gles/cogl-fixed-fragment-shader.glsl | 33 +-- gles/cogl-fixed-vertex-shader.glsl | 19 +- gles/cogl-gles2-wrapper.c | 552 ++++++++++++++++++++++++++++------ gles/cogl-gles2-wrapper.h | 131 ++++++--- gles/cogl-texture-private.h | 21 ++ gles/cogl-texture.c | 281 +++++++++++++++++- 16 files changed, 1260 insertions(+), 179 deletions(-) commit b4438143e586796b34c4800833eefa048a352add Author: Emmanuele Bassi Date: Fri Dec 19 16:44:40 2008 +0000 Merge branch 'cairo-texture' * cairo-texture: [cairo-texture] Remove the construct only restriction on surface size [cairo-texture] Silently discard 0x0 surfaces Re-indent ClutterPath header Add a test case for the new cairo path functions Add clutter_path_to_cairo_path and clutter_path_add_cairo_path Warn instead of returning in the IN_PAINT check Small documentation fixes Print a warning when creating a cairo_t while painting Do not set the IN_PAINT flag inside the Stage paint Set the IN_PAINT private flag [docs] Add ClutterCairoTexture to the API reference Add ClutterCairoTexture Require Cairo as a Clutter dependency Conflicts: Fix merge conflict in clutter/clutter-path.h commit c3e4c6df08bccda04a525cacba2cb8ab24d5f259 Merge: b11b74f 4aea0d6 Author: Neil Roberts Date: Wed Dec 10 12:25:25 2008 +0000 Merge commit 'git-svn' into multiple-texture-rectangle commit 4aea0d6e48e14a7521f0edeb288f55ff4417e0d2 Author: Neil Roberts Date: Wed Dec 10 12:13:20 2008 +0000 * clutter/cogl/gl/cogl.c: * clutter/cogl/gl/cogl-defines.h.in: * clutter/cogl/gl/cogl-context.h: * clutter/cogl/common/cogl-mesh.c: Rename the glBufferDataSub function to glBufferSubData. When calling glXGetProcAddress with the former Mesa returns a stub dispatch function which will segfault if you try to use it. With NVIDIA it returns NULL so _cogl_features_init decides the card doesn't have VBO support. common/cogl-mesh.c | 14 ++------------ gl/cogl-context.h | 2 +- gl/cogl-defines.h.in | 2 +- gl/cogl.c | 8 ++++---- 4 files changed, 8 insertions(+), 18 deletions(-) commit b11b74fcdec86233c67d52d4bc84e8da6de15be2 Author: Neil Roberts Date: Tue Dec 9 18:03:29 2008 +0000 Use a single index array There's no point in clearing the index array because it is always the same sequence of indices regardless of the vertices. Instead it is just added to when there are more vertices than ever before. gl/cogl-texture.c | 51 +++++++++++++++++++++++++++++++++------------------ gles/cogl-texture.c | 51 +++++++++++++++++++++++++++++++++------------------ 2 files changed, 66 insertions(+), 36 deletions(-) commit 8caf39eb00ea4db7c57b58c25a93ee23dca451c7 Merge: 223c122 58f6aaa Author: Neil Roberts Date: Tue Dec 9 15:10:56 2008 +0000 Merge commit 'git-svn' into multiple-texture-rectangle commit 223c1225ea92817a411e86b81adfcae04dba1636 Author: Neil Roberts Date: Tue Dec 9 15:10:33 2008 +0000 Support cogl_texture_multiple_rectangles in GL ES backend gles/cogl-context.c | 14 ++- gles/cogl-context.h | 11 ++- gles/cogl-texture.c | 343 +++++++++++++++++++++++++++++---------------------- 3 files changed, 212 insertions(+), 156 deletions(-) commit 59aef7488f98fbeb3cedc8f535fbb964b105a51a Author: Neil Roberts Date: Tue Dec 9 15:01:10 2008 +0000 Minor fix to indentation in gl/cogl-texture.c gl/cogl-texture.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 3f492e60542ce8303c9863798a935d7967d6d16d Author: Neil Roberts Date: Tue Dec 9 13:16:42 2008 +0000 Add gtk-doc for cogl_texture_multiple_rectangles cogl-texture.h | 18 ++++++++++++++++++ doc/reference/cogl/cogl-sections.txt | 1 + 2 files changed, 19 insertions(+), 0 deletions(-) commit 778a9f7d6761e22937e48c9d63001d34b30a9f4a Author: Neil Roberts Date: Tue Dec 9 13:02:28 2008 +0000 Use glDrawRangeElements to share vertices When drawing a quad from cogl_texture_multiple_rectangles share two of the vertices in each triangle by using indices. gl/cogl-context.c | 4 ++ gl/cogl-context.h | 1 + gl/cogl-texture.c | 157 ++++++++++++++++++++++++++++------------------------- 3 files changed, 88 insertions(+), 74 deletions(-) commit 3b5eb3afebaeacbdf70e01517e4375c4db1fc10c Merge: 7a276af 58f6aaa Author: Neil Roberts Date: Thu Dec 4 18:08:40 2008 +0000 Merge commit 'git-svn' into multiple-texture-rectangle Conflicts: clutter/cogl/gl/cogl-texture.c commit 7a276affd68d928e5afcb9faa0e8ada69c2141f3 Author: Neil Roberts Date: Thu Dec 4 17:50:03 2008 +0000 Use the correct length in _cogl_texture_flush_vertices The check for whether there are any rectangles to flush was using the wrong value so it would always flush. Thanks to Johan Bilien for spotting. gl/cogl-texture.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 58f6aaa589ec8138a3c643501e30f8e514e07b86 Author: Neil Roberts Date: Thu Dec 4 17:24:33 2008 +0000 Bug 1297 - Bring back support for GL_ARB_texture_rectangle * clutter/cogl/gl/cogl-texture.c (cogl_texture_new_from_foreign, (_cogl_texture_quad_hw, cogl_texture_polygon), (_cogl_texture_quad_sw): Support GL_ARB_texture_rectangle textures * clutter/glx/clutter-glx-texture-pixmap.c: Use rectangle textures when NPOTs are not available or it is forced by the CLUTTER_PIXMAP_TEXTURE_RECTANGLE environment variable. * clutter/cogl/gl/cogl.c (cogl_enable): Allow enabling GL_TEXTURE_RECTANGLE_ARB. gl/cogl-texture.c | 109 +++++++++++++++++++++++++++++++++++++---------------- gl/cogl.c | 8 +++- 2 files changed, 83 insertions(+), 34 deletions(-) commit 10d7cf3273e8963ee465d8c71cf28d02e8252cd9 Author: Neil Roberts Date: Thu Dec 4 13:45:09 2008 +0000 Bug 1172 - Disjoint paths and clip to path * clutter/cogl/cogl-path.h: * clutter/cogl/common/cogl-primitives.c: * clutter/cogl/common/cogl-primitives.h: * clutter/cogl/gl/cogl-primitives.c: * clutter/cogl/gles/cogl-primitives.c: Changed the semantics of cogl_path_move_to. Previously this always started a new path but now it instead starts a new disjoint sub path. The path isn't cleared until you call either cogl_path_stroke, cogl_path_fill or cogl_path_new. There are also cogl_path_stroke_preserve and cogl_path_fill_preserve functions. * clutter/cogl/gl/cogl-context.c: * clutter/cogl/gl/cogl-context.h: * clutter/cogl/gles/cogl-context.c: * clutter/cogl/gles/cogl-context.h: Convert the path nodes array to a GArray. * clutter/cogl/gl/cogl-texture.c: * clutter/cogl/gles/cogl-texture.c: Call cogl_clip_ensure * clutter/cogl/common/cogl-clip-stack.c: * clutter/cogl/common/cogl-clip-stack.h: Simplified the clip stack code quite a bit to make it more maintainable. Previously whenever you added a new clip it would go through a separate route to immediately intersect with the current clip and when you removed it again it would immediately rebuild the entire clip. Now when you add or remove a clip it doesn't do anything immediately but just sets a dirty flag instead. * clutter/cogl/gl/cogl.c: * clutter/cogl/gles/cogl.c: Taken away the code to intersect stencil clips when there is exactly one stencil bit. It won't work with path clips and I don't know of any platform that doesn't have eight or zero stencil bits. It needs at least three bits to intersect a path with an existing clip. cogl_features_init now just decides you don't have a stencil buffer at all if you have less than three bits. * clutter/cogl/cogl.h.in: New functions and documentation. * tests/interactive/test-clip.c: Replaced with a different test that lets you add and remove clips. The three different mouse buttons add clips in different shapes. This makes it easier to test multiple levels of clipping. * tests/interactive/test-cogl-primitives.c: Use cogl_path_stroke_preserve when using the same path again. * doc/reference/cogl/cogl-sections.txt: Document the new functions. cogl-path.h | 88 ++++-- cogl.h.in | 43 +++- common/cogl-clip-stack.c | 348 ++++++++++++++------- common/cogl-clip-stack.h | 15 +- common/cogl-primitives.c | 63 +++- common/cogl-primitives.h | 22 ++- doc/reference/cogl/cogl-sections.txt | 6 + gl/cogl-context.c | 13 +- gl/cogl-context.h | 10 +- gl/cogl-primitives.c | 206 +++++++++---- gl/cogl-texture.c | 4 + gl/cogl.c | 161 +--------- gles/cogl-context.c | 14 +- gles/cogl-context.h | 10 +- gles/cogl-primitives.c | 567 ++++++++++++++++++++-------------- gles/cogl-texture.c | 4 + gles/cogl.c | 154 +--------- 17 files changed, 977 insertions(+), 751 deletions(-) commit be655b05aded5c0529f160a4c0486f7c69cb6015 Author: Neil Roberts Date: Mon Dec 1 16:27:54 2008 +0000 Bug 1305 - NPOT textures unaligned to a pixel sometimes have border artifacts * clutter/cogl/gl/cogl-texture.c: Set the wrap mode of a texture on demand Instead of setting the wrap mode once per texture at creation, it is now changed whenever the texture is drawn. The previous value is cached so that it isn't changed if the value is the same. This is used in _cogl_texture_quad_hw to only enable GL_REPEAT mode when the coordinates are not in the range [0,1]. Otherwise it can pull in pixels from the other edge when the texture is rendered off-pixel. gl/cogl-texture.c | 102 ++++++++++++++++++++++++++--------------------------- 1 files changed, 50 insertions(+), 52 deletions(-) commit 420b1f0791eb2c1b06c115ff33cc49a99eb95d25 Author: Neil Roberts Date: Fri Nov 28 14:20:07 2008 +0000 Use GL_TRIANGLES for the texture vertex array Most cards don't actually support GL_QUADS and they are deprecated in GL 3.0 so there is a chance it will perform faster with GL_TRIANGLES even though it has to submit two extra vertices. gl/cogl-texture.c | 32 +++++++++++++++++++++++--------- 1 files changed, 23 insertions(+), 9 deletions(-) commit c502c5c3f41b1dc0f165930c6feb5a3f00aec90b Author: Neil Roberts Date: Fri Nov 28 12:44:21 2008 +0000 Add cogl_texture_multiple_rectangles This takes an array of sets of 8 floats to describe the rectangles. It tries to send the geometry with a single glDrawArrays as far as possible. cogl_texture_rectangle is now just a wrapper around cogl_texture_multiple_rectangles. cogl-texture.h | 5 +++ gl/cogl-texture.c | 74 +++++++++++++++++++++++++++++++++++----------------- 2 files changed, 55 insertions(+), 24 deletions(-) commit 47a21cd94f5499201d014452bb8b0c2fc77f5c55 Author: Neil Roberts Date: Fri Nov 28 12:33:19 2008 +0000 Make cogl_texture_rectangle use the vertex array cogl_texture_quad_hw and _sw now just add vertices to the vertex array. The last texture used is stored and if a different texture is encountered then flushes the vertices. cogl_texture_rectangle always flushes the vertices after calling either of the functions. gl/cogl-context.h | 7 ++- gl/cogl-texture.c | 199 ++++++++++++++++++++++++++++++----------------------- 2 files changed, 118 insertions(+), 88 deletions(-) commit 5557de30eb80dcb5dfd36b142492cf3d231a89f8 Author: Neil Roberts Date: Thu Nov 27 16:44:39 2008 +0000 Use a GArray for the texture vertices in cogl_texture_polygon Previously it was a dynamic array that was manually reallocated. gl/cogl-context.c | 11 +++++++---- gl/cogl-context.h | 3 +-- gl/cogl-texture.c | 32 +++++++++----------------------- 3 files changed, 17 insertions(+), 29 deletions(-) commit f4465ccb05480647a9418dd56a6c6ea511315791 Author: Neil Roberts Date: Wed Nov 26 16:35:25 2008 +0000 * clutter/cogl/gl/cogl-texture.c (cogl_texture_rectangle): Fixed the test for whether to use hardware tiling. Previously it assumed that texture coordinates are in increasing order but this is not the case since bug 1057 was fixed. The texture coordinates are now sorted later. It also allowed negative coordinates which doesn't make sense if the texture has waste. gl/cogl-texture.c | 33 ++++++++++++--------------------- 1 files changed, 12 insertions(+), 21 deletions(-) commit 50b6ecc56d70ddfcb076cc21448974941d8c64d9 Author: Neil Roberts Date: Mon Nov 24 12:27:48 2008 +0000 * clutter/cogl/gl/cogl-texture.c (cogl_texture_polygon): Fix the equation for calculating texture coordinates when using sliced textures. This became broken in revision 3520. gl/cogl-texture.c | 18 +++++++++++------- 1 files changed, 11 insertions(+), 7 deletions(-) commit d741f67cfc26ca3568c27b428f04ff146e599c13 Author: Neil Roberts Date: Fri Nov 21 16:18:58 2008 +0000 Bug 1271 - mingw compiling failed: undefined reference to `_glDrawRangeElements@24' Resolve glDrawRangeElements with cogl_get_proc_address instead of calling it directly because functions defined in GL > 1.1 are not directly exported under Windows. * clutter/cogl/common/cogl-mesh.c: Use the function pointer from the context * clutter/cogl/gl/cogl-context.c (cogl_create_context): Initialise function pointer. * clutter/cogl/gl/cogl-context.h (CoglContext): Add a function pointer * clutter/cogl/gl/cogl-defines.h.in: Add a typedef for the function pointer. * clutter/cogl/gl/cogl.c (_cogl_features_init): Resolve glDrawRangeElements common/cogl-mesh.c | 11 ++++++++++- gl/cogl-context.c | 2 ++ gl/cogl-context.h | 2 ++ gl/cogl-defines.h.in | 9 +++++++++ gl/cogl.c | 7 +++++++ 5 files changed, 30 insertions(+), 1 deletions(-) commit 454d4a69a2f88d5d16c5f4fb8ab12a2474c1e06b Author: Robert Bragg Date: Tue Nov 18 16:24:31 2008 +0000 * clutter/cogl/common/cogl-mesh.c: Re-works validate_custom_attribute_name() so it doesn't access an un-initialised variable. common/cogl-mesh.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) commit 8b557c6c139e614b31ffd3f35b095e0253968377 Author: Robert Bragg Date: Tue Nov 18 16:24:09 2008 +0000 A comparison of gl/cogl-texture.c and gles/cogl-texture.c, to reduce differences and improve maintainability. * clutter/cogl/gl/cogl-context.h: Adds a CoglTextureGLVertex typedef + texture_vertices and texture_vertices_size members to CoglContext for using vertex arrays like GLES does * clutter/cogl/gl/cogl-context.c: Initializes texture_vertices + texture_vertices_size members * clutter/cogl/gl/cogl-internal.h: Adds COGL_ENABLE_COLOR_ARRAY * clutter/cogl/gl/cogl.c: Add COGL_ENABLE_COLOR_ARRAY support to cogl_enable * clutter/cogl/gles/cogl-context.h: Change the CoglTextureGLVertex to use GLfloat for the position and texture coord attributes and GLubyte for the color. * clutter/cogl/gles/cogl-texture-private.h: Adds a wrap_mode member like GL has. * clutter/cogl/gl/cogl-texture.c * clutter/cogl/gles/cogl-texture.c: Improves the comparability of the files, such that the remaining differences, better reflect the fundamental differences needed between GL and GLES. Notably GL no longer uses glBegin/glEnd for submitting vertices, it uses vertex arrays like GLES and this gives a small but measurable fps improvement for test-text. gl/cogl-context.c | 2 + gl/cogl-context.h | 11 +- gl/cogl-internal.h | 3 +- gl/cogl-texture.c | 415 ++++++++++++++++--------------- gl/cogl.c | 3 + gles/cogl-context.h | 6 +- gles/cogl-texture-private.h | 1 + gles/cogl-texture.c | 591 ++++++++++++++++++++++++++++--------------- 8 files changed, 625 insertions(+), 407 deletions(-) commit 6731dfa468cffe0db1c1c3de621faddfed04bb54 Author: Robert Bragg Date: Tue Nov 18 16:23:40 2008 +0000 * clutter/cogl/gl/cogl-internal.h * clutter/cogl/gles/cogl-internal.h: Removes semicolon after the GE() macro since that breaks using it as a single statement. gl/cogl-internal.h | 2 +- gles/cogl-internal.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit e7338896553efe18bd4ff72426e4e32f6d8d3910 Author: Emmanuele Bassi Date: Tue Nov 18 15:21:02 2008 +0000 2008-11-18 Emmanuele Bassi * clutter/cogl/cogl-shader.h: Add a function for setting an integer uniform, similar to cogl_program_uniform_1f(). * clutter/cogl/gl/cogl-program.c: Implement the GL version of cogl_program_uniform_1i(). * clutter/cogl/gles/cogl-program.c: Implement the GLES version of cogl_program_uniform_1i(). cogl-shader.h | 15 +++++++++++++-- gl/cogl-program.c | 8 ++++++++ gles/cogl-program.c | 7 +++++++ 3 files changed, 28 insertions(+), 2 deletions(-) commit 2142062ba1da5563c264946815fe00550c7679aa Author: Emmanuele Bassi Date: Tue Nov 18 15:08:40 2008 +0000 2008-11-18 Emmanuele Bassi Bug 1049 - Clutter doesn't support most GLSL uniforms (patch by Chris Lord and Neil Roberts) * README: Update release notes. * clutter/Makefile.am: * clutter/clutter-shader-types.[ch]: Add GValue types for shader values. * clutter/clutter-actor.[ch]: Update the shader API to use the newly added GValue support for GLSL shader uniform setters. * clutter/clutter-shader.[ch]: Add float and integer convenience API for single value GLSL uniform setters. * clutter/cogl/cogl-shader.h: Add new uniform setters. * clutter/cogl/gl/cogl-context.c: * clutter/cogl/gl/cogl-context.h: * clutter/cogl/gl/cogl-defines.h.in: * clutter/cogl/gl/cogl-program.c: * clutter/cogl/gl/cogl.c: Update the GL implementation of COGL to handle the GLSL uniform setters. * clutter/cogl/gles/cogl-gles2-wrapper.c: * clutter/cogl/gles/cogl-gles2-wrapper.h: * clutter/cogl/gles/cogl-internal.h: * clutter/cogl/gles/cogl-program.c: Update the GLES 2.0 implementation of COGL to handle the GLSL uniform setters. * doc/reference/clutter/clutter-sections.txt: * doc/reference/cogl/cogl-sections.txt: Update the documentation. * tests/interactive/test-fbo.c: * tests/interactive/test-shader.c: Update the shader tests. cogl-shader.h | 66 +++++++++++++++--- doc/reference/cogl/cogl-sections.txt | 3 + gl/cogl-context.c | 18 +++++ gl/cogl-context.h | 21 ++++++- gl/cogl-defines.h.in | 126 ++++++++++++++++++++++++++++++++-- gl/cogl-program.c | 99 ++++++++++++++++++++++++++- gl/cogl.c | 93 ++++++++++++++++++++++++- gles/cogl-gles2-wrapper.c | 81 +++++++++++++++++++++- gles/cogl-gles2-wrapper.h | 4 +- gles/cogl-internal.h | 24 +++++++ gles/cogl-program.c | 109 ++++++++++++++++++++++++++++- 11 files changed, 621 insertions(+), 23 deletions(-) commit fe7aa83f8651c477c45d1f5dd9908495668fb0d6 Author: Neil Roberts Date: Thu Nov 13 14:44:27 2008 +0000 * clutter/cogl/gles/cogl-gles2-wrapper.h: * clutter/cogl/gles/cogl-gles2-wrapper.c: Initialise the 'tex' sampler uniform to 0. The GLSL spec specifically says that you must initialize sampler uniforms. This fixes texturing for GLES 2 when using the PowerVR simulator via software Mesa. gles/cogl-gles2-wrapper.c | 7 +++++++ gles/cogl-gles2-wrapper.h | 5 ++++- 2 files changed, 11 insertions(+), 1 deletions(-) commit 8ae02decb4617896e05d46cbacadc42c88b5ba0c Author: Robert Bragg Date: Thu Nov 13 14:28:16 2008 +0000 Gets the mesh API working with GLES2 * clutter/cogl/common/cogl-mesh.c: Make sure we use the appropriate cogl_wrap_gl* funcs as appropriate * clutter/cogl/gles/cogl-gles2-wrapper.c * clutter/cogl/gles/cogl-gles2-wrapper.h: In our glColorPointer wrapper we needed to mark our color attribute as normalized. * tests/conform/Makefile.am: When creating unit test symlinks we use the -l gtester option to list tests, but when using the PVR SDK the test binary also spews out some extra info that caused lots of random symlinks to be created. We now grep for lines starting with a '/' * tests/conform/test-mesh-contiguous.c * tests/conform/test-mesh-mutability.c: Use cogl_set_source_color instead of directly calling glColor4ub common/cogl-mesh.c | 27 +++++++++++++++++++++------ gles/cogl-gles2-wrapper.c | 16 ++++++++++++++++ gles/cogl-gles2-wrapper.h | 4 ++++ 3 files changed, 41 insertions(+), 6 deletions(-) commit 536347be6981631c004c3b8d3292f202c658864b Author: Emmanuele Bassi Date: Wed Nov 12 13:57:58 2008 +0000 2008-11-12 Emmanuele Bassi * clutter/cogl/cogl-color.h: * clutter/cogl/cogl-path.h: * clutter/cogl/cogl-types.h: * clutter/cogl/common/cogl-color.c: Deprecated cogl_color() in favour of cogl_set_source_color() and friends; store the CoglColor components as unsigned bytes instead of fixed point normalized values; add functions for allocating, copying and freeing CoglColor, for use of language bindings. * clutter/cogl/cogl.h.in: * clutter/cogl/cogl-deprecated.h: Added cogl-deprecated.h, an header file containing the deprecation symbols similar to clutter-deprecated.h. * clutter/cogl/gl/Makefile.am: * clutter/cogl/gl/cogl-texture.c: * clutter/cogl/gl/cogl.c: * clutter/cogl/gles/Makefile.am: * clutter/cogl/gles/cogl-texture.c: * clutter/cogl/gles/cogl.c: Update the GL and GLES implementations of COGL after the CoglColor changes. * clutter/clutter-actor.c: * clutter/clutter-clone-texture.c: * clutter/clutter-entry.c: * clutter/clutter-label.c: * clutter/clutter-rectangle.c: * clutter/clutter-texture.c: Do not use CoglColor whenever it is possible, and use cogl_set_source_color4ub() instead. * clutter/pango/cogl-pango-render.c: Ditto as above. * doc/reference/clutter/subclassing-ClutterActor.xml: * doc/reference/cogl/cogl-sections.txt: Update the documentation. * tests/interactive/test-cogl-offscreen.c: * tests/interactive/test-cogl-primitives.c: * tests/interactive/test-cogl-tex-convert.c: * tests/interactive/test-cogl-tex-foreign.c: * tests/interactive/test-cogl-tex-getset.c: * tests/interactive/test-cogl-tex-polygon.c: * tests/interactive/test-cogl-tex-tile.c: * tests/interactive/test-paint-wrapper.c: Drop the usage of CoglColor whenever it is possible. cogl-color.h | 83 +++++++++++++++++++++++++++- cogl-deprecated.h | 5 ++ cogl-path.h | 10 --- cogl-types.h | 8 +- cogl.h.in | 1 + common/cogl-color.c | 101 +++++++++++++++++++++++++++------- doc/reference/cogl/cogl-sections.txt | 18 +++++- gl/Makefile.am | 2 + gl/cogl-texture.c | 2 +- gl/cogl.c | 10 ++-- gles/Makefile.am | 2 + gles/cogl-texture.c | 4 +- gles/cogl.c | 2 +- 13 files changed, 199 insertions(+), 49 deletions(-) commit a55b588b30d5363b608774faa6578ab5a0cc41f6 Author: Neil Roberts Date: Wed Nov 12 13:03:09 2008 +0000 Bug 1057 - cogl_texture_rectangle doesn't support backward coordinates * clutter/cogl/gl/cogl-texture.c: Instead of sorting the vertex and texture coordinates passed to cogl_texture_rectangle, just swap both sets whenever the texture coordinates are backward. gl/cogl-texture.c | 56 +++++++++++++++++++++------------------------------ gles/cogl-texture.c | 54 +++++++++++++++++++++---------------------------- 2 files changed, 46 insertions(+), 64 deletions(-) commit ba1cab0a624d188e763a11daa57af7423aa28367 Author: Neil Roberts Date: Wed Nov 12 12:08:44 2008 +0000 * clutter/cogl/gles/Makefile.am (libclutterinclude_HEADERS): * clutter/cogl/gl/Makefile.am (libclutterinclude_HEADERS): * clutter/cogl/common/Makefile.am (libclutter_cogl_common_la_SOURCES): Move cogl-mesh.h into the headers for libclutter so that it will get installed. common/Makefile.am | 3 +-- gl/Makefile.am | 3 ++- gles/Makefile.am | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) commit 46e4bd3a827861d568500282d21b75fc1a15e4c9 Author: Neil Roberts Date: Wed Nov 12 10:55:06 2008 +0000 Fix warnings in mesh tests * tests/conform/test-mesh-mutability.c (on_paint): * tests/conform/test-mesh-interleved.c (on_paint): * tests/conform/test-mesh-contiguous.c (on_paint): Use g_usleep instead of sleep * tests/conform/test-mesh-mutability.c (queue_redraw): * tests/conform/test-mesh-interleved.c (queue_redraw): * tests/conform/test-mesh-contiguous.c (queue_redraw): Added missing return statement * clutter/cogl/cogl-mesh.h: Add a declaration for cogl_mesh_submit * clutter/cogl/common/cogl-mesh.c (cogl_mesh_submit): Move the documentation to cogl-mesh.h to match the rest of the functions cogl-mesh.h | 13 +++++++++++++ common/cogl-mesh.c | 10 ---------- 2 files changed, 13 insertions(+), 10 deletions(-) commit 1e68a8d59eb5a6dda5249e7a953259769855722a Author: Robert Bragg Date: Mon Nov 10 18:53:14 2008 +0000 Bug 1164 - Implements the proposed Mesh API * clutter/cogl/cogl-mesh.h * clutter/cogl/cogl-types.h * clutter/cogl/cogl.h.in * clutter/cogl/common/Makefile.am * clutter/cogl/common/cogl-mesh-private.h * clutter/cogl/common/cogl-mesh.c * clutter/cogl/gl/cogl-context.c * clutter/cogl/gl/cogl-context.h * clutter/cogl/gl/cogl-defines.h.in * clutter/cogl/gl/cogl.c * clutter/cogl/gles/cogl-context.c * clutter/cogl/gles/cogl-context.h * doc/reference/cogl/cogl-docs.sgml * doc/reference/cogl/cogl-sections.txt: The Mesh API provides a means for submitting an extensible number of per vertex attributes to OpenGL in a way that doesn't require format conversions and so that the data can be mapped into the GPU (in vertex buffer objects) for - hopefully - fast re-use. There are a number of things we can potentially use this API for, but right now this just provides a foundation to build on. Please read the extensive list of TODO items in cogl-mesh.c for examples. Please refer to the cogl-mesh section in the reference manual for documentation of the API. * tests/conform/Makefile.am * tests/conform/test-conform-main.c * tests/conform/test-mesh-contiguous.c * tests/conform/test-mesh-interleved.c * tests/conform/test-mesh-mutability.c: Privides basic coverage testing for the mesh API. cogl-mesh.h | 286 ++++++ cogl-types.h | 4 +- cogl.h.in | 1 + common/Makefile.am | 4 +- common/cogl-mesh-private.h | 143 +++ common/cogl-mesh.c | 1611 ++++++++++++++++++++++++++++++++++ doc/reference/cogl/cogl-docs.sgml | 1 + doc/reference/cogl/cogl-sections.txt | 15 + gl/cogl-context.c | 2 + gl/cogl-context.h | 16 +- gl/cogl-defines.h.in | 55 ++ gl/cogl.c | 51 ++- gles/cogl-context.c | 2 + gles/cogl-context.h | 3 + 14 files changed, 2190 insertions(+), 4 deletions(-) commit d0ab4856b50d47a3d0b5c4aded88bde37ff9662b Author: Neil Roberts Date: Thu Nov 6 11:42:11 2008 +0000 * clutter/cogl/gles/cogl.c (cogl_perspective): * clutter/cogl/common/cogl-fixed.c (cogl_fixed_sin) (cogl_angle_sin, cogl_angle_tan, cogl_fixed_sqrt): Replaced uses of 1 + ~x with just -x which is equivalent and easier to understand. common/cogl-fixed.c | 26 +++++++++++++------------- gles/cogl.c | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) commit a41624276cb50ff3fbda079f4dcd7db138aef2d1 Author: Neil Roberts Date: Tue Nov 4 12:43:06 2008 +0000 * clutter/cogl/gl/cogl.c (cogl_perspective): Use the accurate 64-bit multiplication macro instead of COGL_FIXED_FAST_DIV for calculating xmax as was done previously. This fixes test-perspective and other tests that had a gone a bit skewiff. gl/cogl.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 54cecff92344a61091fcb5c0bbef003019afed83 Author: Emmanuele Bassi Date: Mon Nov 3 23:58:13 2008 +0000 2008-11-03 Emmanuele Bassi * clutter/cogl/gl/Makefile.am: Whitespace fixes. * clutter/cogl/gles/Makefile.am: Put back a missing backslash that broke the GLES build. gl/Makefile.am | 1 - gles/Makefile.am | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) commit b98ea019396f621b097f23188fb3a6815c07ed16 Author: Emmanuele Bassi Date: Mon Nov 3 23:54:38 2008 +0000 2008-11-03 Emmanuele Bassi Bug 1231 - Build fails in gles flavour in revision 3442 * clutter/cogl/gles/cogl-context.h: Fix remaining use of ClutterFixed over CoglFixed. (Michael Boccara) gles/cogl-context.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit d3d257b9136c56aeff06230ea7ab4c7bc155387a Author: Emmanuele Bassi Date: Thu Oct 30 17:57:41 2008 +0000 2008-10-30 Emmanuele Bassi * clutter/cogl/cogl-color.h: * clutter/cogl/cogl-fixed.h: * clutter/cogl/cogl-offscreen.h: * clutter/cogl/cogl-path.h: * clutter/cogl/cogl-shader.h: * clutter/cogl/cogl-texture.h: * clutter/cogl/cogl-types.h: Add copyright and licensing notice to the newly added files. cogl-color.h | 19 +++++++++++++++++++ cogl-fixed.h | 19 +++++++++++++++++++ cogl-offscreen.h | 19 +++++++++++++++++++ cogl-path.h | 19 +++++++++++++++++++ cogl-shader.h | 19 +++++++++++++++++++ cogl-texture.h | 19 +++++++++++++++++++ cogl-types.h | 19 +++++++++++++++++++ 7 files changed, 133 insertions(+), 0 deletions(-) commit 1bcdf7d9eb4c8b15f3b2644c76e196567e3f9c6b Author: Emmanuele Bassi Date: Thu Oct 30 17:25:00 2008 +0000 2008-10-30 Emmanuele Bassi Bug 1219 - Clean up cogl.h * clutter/cogl/cogl.h.in: * clutter/cogl/cogl-offscreen.h: * clutter/cogl/cogl-path.h: * clutter/cogl/cogl-shader.h: * clutter/cogl/cogl-texture.h: * clutter/cogl/cogl-types.h: Split up the massive cogl.h file into sub-header for each section of the API. * clutter/cogl/gl/*: * clutter/cogl/gles/*: Update the GL and GLES implementations of COGL to cope with the new header structure. * doc/reference/cogl/Makefile.am: Fix symbol retrieval. cogl-color.h | 24 +- cogl-fixed.h | 23 +- cogl-offscreen.h | 110 ++++ cogl-path.h | 315 +++++++++++ cogl-shader.h | 210 +++++++ cogl-texture.h | 371 +++++++++++++ cogl-types.h | 240 ++++++++ cogl.h.in | 1167 +--------------------------------------- common/cogl-color.c | 1 + doc/reference/cogl/Makefile.am | 9 +- gl/Makefile.am | 17 +- gl/cogl-fbo.c | 2 +- gl/cogl-program.c | 2 +- gl/cogl-shader-private.h | 39 ++ gl/cogl-shader.c | 2 +- gl/cogl-shader.h | 39 -- gl/cogl-texture-private.h | 65 +++ gl/cogl-texture.c | 2 +- gl/cogl-texture.h | 65 --- gles/Makefile.am | 16 +- gles/cogl-fbo.c | 2 +- gles/cogl-gles2-wrapper.c | 2 +- gles/cogl-program.c | 2 +- gles/cogl-shader-private.h | 40 ++ gles/cogl-shader.c | 2 +- gles/cogl-shader.h | 40 -- gles/cogl-texture-private.h | 64 +++ gles/cogl-texture.c | 2 +- gles/cogl-texture.h | 64 --- 29 files changed, 1503 insertions(+), 1434 deletions(-) commit 90dbfcd78f4d08e37652f832fe69bbeb8e791d4f Author: Emmanuele Bassi Date: Thu Oct 30 17:04:34 2008 +0000 2008-10-30 Emmanuele Bassi Bug 1212 - Allow only a single include file for Clutter * clutter/*.h: Only allow including clutter.h in third party code. * clutter/cogl/cogl-color.h: * clutter/cogl/cogl-fixed.h: * clutter/cogl/cogl.h.in: Only allow including cogl.h in third party code. * clutter/cogl/common/Makefile.am: * clutter/cogl/gl/Makefile.am: * clutter/cogl/gles/Makefile.am: * clutter/eglnative/Makefile.am: * clutter/eglx/Makefile.am: * clutter/fruity/Makefile.am: * clutter/glx/Makefile.am: * clutter/glx/clutter-glx.h: * clutter/osx/Makefile.am: * clutter/pango/Makefile.am: * clutter/sdl/Makefile.am: * clutter/win32/Makefile.am: * clutter/x11/Makefile.am: Fix build environment. * clutter/x11/clutter-x11-texture-pixmap.h: * clutter/x11/clutter-x11.h: Fix inclusion rules. * tests/test-pixmap.c: Fix inclusion of GdkPixbuf header. * README: Update release notes. cogl-color.h | 4 ++++ cogl-fixed.h | 4 ++++ cogl.h.in | 4 ++++ common/Makefile.am | 1 + gl/Makefile.am | 1 + gles/Makefile.am | 1 + 6 files changed, 15 insertions(+), 0 deletions(-) commit f26827c7d13c30fae4f69576b9daad9315117cde Author: Emmanuele Bassi Date: Thu Oct 30 16:52:56 2008 +0000 2008-10-30 Emmanuele Bassi Bug 1211 - Drop ClutterFeatureFlags usage from COGL * clutter/cogl/cogl.h.in: * clutter/cogl/gl/cogl.c: * clutter/cogl/gles/cogl.c: Do not use ClutterFeatureFlags when CoglFeatureFlags will do. This removes the last usage of Clutter API inside COGL. cogl.h.in | 4 +--- gl/cogl.c | 8 ++++---- gles/cogl.c | 6 +++--- 3 files changed, 8 insertions(+), 10 deletions(-) commit d1f6dbaa79f31722ef52305ae257f3efe6c246a7 Author: Emmanuele Bassi Date: Thu Oct 30 16:50:07 2008 +0000 2008-10-30 Emmanuele Bassi Bug 1210 - Add CoglColor API * clutter/cogl/cogl-color.h: * clutter/cogl/cogl.h.in: * clutter/cogl/common/Makefile.am: * clutter/cogl/common/cogl-color.c: * clutter/cogl/gl/Makefile.am: * clutter/cogl/gl/cogl.c: * clutter/cogl/gles/Makefile.am: * clutter/cogl/gles/cogl-texture.c: * clutter/cogl/gles/cogl.c: Add a new color-type, to be used by COGL. CoglColor is optimized to allow the minimum amount of conversions possible for both GL and GLES implementations. * clutter/clutter-actor.c: * clutter/clutter-clone-texture.c: * clutter/clutter-entry.c: * clutter/clutter-main.c: * clutter/clutter-rectangle.c: * clutter/clutter-stage.c: * clutter/clutter-texture.c: Use CoglColor when needed. * clutter/pango/pangoclutter-render.c: Use CoglColor when needed. * doc/reference/cogl/cogl-docs.sgml: * doc/reference/cogl/cogl-sections.txt: Update the documentation. * tests/test-cogl-offscreen.c: * tests/test-cogl-primitives.c: * tests/test-cogl-tex-convert.c: * tests/test-cogl-tex-foreign.c: * tests/test-cogl-tex-getset.c: * tests/test-cogl-tex-polygon.c: * tests/test-cogl-tex-tile.c: * tests/test-paint-wrapper.c: Update the tests. * README: Update release notes. cogl-color.h | 223 ++++++++++++++++++++++++++++++++++ cogl.h.in | 13 +- common/Makefile.am | 3 +- common/cogl-color.c | 107 ++++++++++++++++ doc/reference/cogl/cogl-docs.sgml | 1 + doc/reference/cogl/cogl-sections.txt | 26 ++++ gl/Makefile.am | 2 + gl/cogl.c | 32 +++--- gles/Makefile.am | 2 + gles/cogl-texture.c | 26 ++-- gles/cogl.c | 32 +++--- 11 files changed, 415 insertions(+), 52 deletions(-) commit 71a0be6fff8f2871742f269b743833e0d11f9f29 Author: Emmanuele Bassi Date: Thu Oct 30 16:37:55 2008 +0000 2008-10-30 Emmanuele Bassi Bug 1209 - Move fixed point API in COGL * clutter/cogl/cogl-fixed.h: * clutter/cogl/cogl.h.in: * clutter/cogl/common/Makefile.am: * clutter/cogl/common/cogl-fixed.c: Add fixed point API, modelled after the ClutterFixed. The CoglFixed API supercedes the ClutterFixed one and avoids the dependency of COGL on Clutter's own API. * clutter/cogl/common/cogl-clip-stack.c: * clutter/cogl/common/cogl-primitives.c: * clutter/cogl/common/cogl-primitives.h: Update internal usage of ClutterFixed to CoglFixed. * clutter/cogl/gl/Makefile.am: * clutter/cogl/gl/cogl-primitives.c: * clutter/cogl/gl/cogl-texture.c: * clutter/cogl/gl/cogl.c: Ditto, in the GL implementation of the COGL API. * clutter/cogl/gles/Makefile.am: * clutter/cogl/gles/cogl-fbo.c: * clutter/cogl/gles/cogl-gles2-wrapper.c: * clutter/cogl/gles/cogl-primitives.c: * clutter/cogl/gles/cogl-texture.c: * clutter/cogl/gles/cogl.c: Ditto, in the GLES implementation of the COGL API. * clutter/pango/pangoclutter-glyph-cache.c: * clutter/pango/pangoclutter-glyph-cache.h: Ditto, in the Pango renderer glyphs cache. * clutter/clutter-fixed.c: * clutter/clutter-fixed.h: ClutterFixed and related API becomes a simple transition API for bindings and public Clutter API. * clutter/clutter-actor.c: * clutter/clutter-alpha.c: * clutter/clutter-backend.c: * clutter/clutter-behaviour-depth.c: * clutter/clutter-behaviour-ellipse.c: * clutter/clutter-behaviour-path.c: * clutter/clutter-behaviour-rotate.c: * clutter/clutter-behaviour-scale.c: * clutter/clutter-clone-texture.c: * clutter/clutter-color.c: * clutter/clutter-entry.c: * clutter/clutter-stage.c: * clutter/clutter-texture.c: * clutter/clutter-timeline.c: * clutter/clutter-units.h: Move from the internal usage of ClutterFixed to CoglFixed. * doc/reference/clutter/clutter-sections.txt: * doc/reference/cogl/cogl-docs.sgml: * doc/reference/cogl/cogl-sections.txt: Update the documentation. * tests/test-cogl-tex-tile.c: * tests/test-project.c: Fix tests after the API change * README: Add release notes. cogl-fixed.h | 753 ++++++++++++++++++++++++++++ cogl.h.in | 194 ++++---- common/Makefile.am | 3 +- common/cogl-clip-stack.c | 36 +- common/cogl-fixed.c | 911 ++++++++++++++++++++++++++++++++++ common/cogl-primitives.c | 240 +++++----- common/cogl-primitives.h | 4 +- doc/reference/cogl/cogl-docs.sgml | 1 + doc/reference/cogl/cogl-sections.txt | 85 ++++ gl/Makefile.am | 9 +- gl/cogl-primitives.c | 32 +- gl/cogl-texture.c | 230 +++++---- gl/cogl.c | 311 ++++++------ gles/Makefile.am | 7 +- gles/cogl-fbo.c | 12 +- gles/cogl-gles2-wrapper.c | 90 ++-- gles/cogl-primitives.c | 36 +- gles/cogl-texture.c | 206 ++++---- gles/cogl.c | 237 +++++----- 19 files changed, 2592 insertions(+), 805 deletions(-) commit 1b619c38432d0fe0f94d11702f27c42e128ed475 Author: Neil Roberts Date: Wed Oct 29 14:52:48 2008 +0000 Bug 1074 - FBOs on GLES * clutter/cogl/gles/cogl-fbo.c: Copy the code from gl/cogl-fbo but use the API calls directly instead of loading an extension because it is part of the core in GLES 2. * clutter/cogl/gles/cogl.c (_cogl_features_init): Report COGL_FEATURE_OFFSCREEN. * clutter/cogl/gles/cogl-fbo.h (CoglFbo): Add gl_stencil_handle. * clutter/cogl/gles/cogl-context.h (CoglContext): Add viewport_store * tests/test-fbo.c (make_shader): Conditionally use the GLES 2 names of the shader variables gles/cogl-context.h | 4 + gles/cogl-fbo.c | 354 +++++++++++++++++++++++++++++++++++++-------------- gles/cogl-fbo.h | 1 + gles/cogl.c | 2 +- 4 files changed, 267 insertions(+), 94 deletions(-) commit 153f5ea73fafe815aa71d01acf863f32dcae1ab9 Author: Neil Roberts Date: Mon Oct 27 14:36:52 2008 +0000 Bug 1189 - Backface culling * clutter/cogl/gl/cogl-texture.c (cogl_texture_polygon) (_cogl_texture_quad_sw, _cogl_texture_quad_hw): * clutter/cogl/gles/cogl-texture.c (cogl_texture_polygon) (_cogl_texture_quad_sw, _cogl_texture_quad_hw): Enable backface culling in GL if it is requested. * clutter/cogl/gles/cogl-texture.c (_cogl_texture_quad_sw) (_cogl_texture_quad_hw): * clutter/cogl/gl/cogl-texture.c (_cogl_texture_quad_sw) (_cogl_texture_quad_hw): Reorder the vertices so that they are counter-clockwise. * clutter/cogl/gles/cogl-context.h (CoglContext): * clutter/cogl/gl/cogl-context.h (CoglContext): Added a flag to store whether backface culling is currently enabled. * clutter/cogl/gles/cogl.c (cogl_enable_backface_culling): * clutter/cogl/gl/cogl.c (cogl_enable_backface_culling): New function * doc/reference/cogl/cogl-sections.txt: Add cogl_enable_backface_culling cogl.h.in | 12 +++++++ doc/reference/cogl/cogl-sections.txt | 1 + gl/cogl-context.h | 2 + gl/cogl-internal.h | 1 + gl/cogl-texture.c | 58 +++++++++++++++++++++------------- gl/cogl.c | 12 +++++++ gles/cogl-context.h | 2 + gles/cogl-internal.h | 1 + gles/cogl-texture.c | 51 +++++++++++++++++------------ gles/cogl.c | 14 +++++++- 10 files changed, 110 insertions(+), 44 deletions(-) commit c8b4de2d6db453dffeb3898bb052a457bbed3141 Author: Neil Roberts Date: Mon Oct 27 12:39:22 2008 +0000 Bug 1196 - Texture border drawing problems * clutter/cogl/gl/cogl-texture.c (_cogl_texture_upload_subregion_to_gl) (_cogl_texture_upload_to_gl): * clutter/cogl/gles/cogl-texture.c (_cogl_texture_upload_to_gl) (_cogl_texture_upload_subregion_to_gl): When uploading data to a sliced texture, fill the waste pixels with copies of the edge of the real texture data. Otherwise the value of the waste pixels are undefined so it will show artifacts when the texture is scaled with GL_LINEAR and the pixels are blended in. gl/cogl-texture.c | 219 ++++++++++++++++++++++++++++++++++++++++++++++++--- gles/cogl-texture.c | 207 +++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 402 insertions(+), 24 deletions(-) commit ae1a4a6a30047a5f210a72cf3b40f4b2eb1ff24f Author: Neil Roberts Date: Mon Oct 20 15:54:17 2008 +0000 Bug 1043 - COGL calls glTexSubImage2D() with out-of-bounds values (SIGSEGV) * clutter/cogl/gl/cogl-texture.c (_cogl_texture_upload_subregion_to_gl): When iterating over the slices, discard ones that don't intersect immediatly otherwise it will call glTexSubImage2D with a negative width/height and then move the source position incorrectly. Thanks to Gwenole Beauchesne. gl/cogl-texture.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-) commit 238e9c3a1a72f93e4669f97cd8217295d1d509a7 Author: Neil Roberts Date: Thu Sep 18 13:16:15 2008 +0000 Bug 1048 - SIGFPE in cogl_texture_set_region() with nvidia * clutter/cogl/gl/cogl-texture.c (cogl_texture_set_region): * clutter/cogl/gles/cogl-texture.c (cogl_texture_set_region): Don't attempt to upload any data if the width or height of the subregion is zero. Thanks to Gwenole Beauchesne. gl/cogl-texture.c | 4 ++++ gles/cogl-texture.c | 4 ++++ 2 files changed, 8 insertions(+), 0 deletions(-) commit 3ae77fbfb7b58592ecd93f79597578d612a21638 Author: Neil Roberts Date: Thu Sep 18 11:24:27 2008 +0000 Bug 1044 - cogl_get_viewport error * clutter/cogl/gles/cogl.c (cogl_get_viewport): Use glGetIntegerv instead of glGetFixedv to read the viewport because the latter converts incorrectly on some hardware. gles/cogl.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) commit 6d07be1179bc19e53d2a5796bd90b1800397115f Author: Emmanuele Bassi Date: Wed Aug 27 12:56:54 2008 +0000 2008-08-27 Emmanuele Bassi Bug 1082 - Texture bitmap is destroyed in wrong way * clutter/cogl/common/cogl-bitmap-pixbuf.c: (_cogl_bitmap_from_file): Make a copy of the pixbuf data in the internal image loader so that we can keep working under the assumption that we are using the GLib memory allocation and deallocation functions. common/cogl-bitmap-pixbuf.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit ef76d8e5e2243079126fd98c5425b11aa512094c Author: Neil Roberts Date: Fri Aug 1 12:23:57 2008 +0000 Bug 945 - Clipping+fbo cloning bugs * clutter/cogl/gl/cogl.c: * clutter/cogl/gles/cogl.c: * clutter/cogl/cogl.h.in: Add cogl_clip_stack_save, cogl_clip_stack_restore, cogl_viewport and cogl_frustum. * clutter/cogl/gl/cogl-fbo.h: * clutter/cogl/gl/cogl-fbo.c: Try to attach a stencil buffer when creating an FBO. * clutter/cogl/common/cogl-clip-stack.c: Add functions to save and restore the whole state of the stack. * clutter/clutter-texture.c (clutter_texture_paint): When rendering the FBO source, setup a temporary asymmetric perspective projection matrix to render it as it would appear on screen. * clutter/clutter-private.h: * clutter/clutter-actor.c (_clutter_actor_apply_modelview_transform_recursive): No longer static and exported in clutter-private.h cogl.h.in | 60 ++++++++++++++++++++++++++++- common/cogl-clip-stack.c | 70 +++++++++++++++++++++++++++++---- common/cogl-clip-stack.h | 5 -- doc/reference/cogl/cogl-sections.txt | 4 ++ gl/cogl-context.h | 1 + gl/cogl-fbo.c | 48 +++++++++++++++++++---- gl/cogl-fbo.h | 1 + gl/cogl.c | 67 ++++++++++++++++++++++++++++++-- gles/cogl-gles2-wrapper.c | 25 ++++++++++++ gles/cogl-gles2-wrapper.h | 4 ++ gles/cogl.c | 55 ++++++++++++++++++++++++-- 11 files changed, 307 insertions(+), 33 deletions(-) commit 88a561fa01048133b7462ba3cfca882016524ef2 Author: Ross Burton Date: Wed Jul 30 09:17:57 2008 +0000 2008-07-30 Ross Burton * clutter/version.xml.in: * cogl/version.xml.in: Remove trailing newline as it upsets Devhelp doc/reference/cogl/version.xml.in | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 0064738678809178a89c5a1766b4973467c6455c Author: Neil Roberts Date: Mon Jul 14 19:22:17 2008 +0000 * clutter/cogl/common/cogl-primitives.c (cogl_path_rel_curve_to): Fixed a typo in the second parameter which meant the curve was drawn incorrectly. common/cogl-primitives.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 5972e9db45cdf6cbfb10ec4f2ef78567f1fc754a Author: Matthew Allum Date: Thu Jul 10 16:19:09 2008 +0000 008-07-10 Matthew Allum * clutter/cogl/gles/cogl-fbo.c: * clutter/cogl/gles/cogl-texture.c: Fix warnings with eglnative build gles/cogl-fbo.c | 2 ++ gles/cogl-texture.c | 50 -------------------------------------------------- 2 files changed, 2 insertions(+), 50 deletions(-) commit 08cd119902d9be64a34200044551e97659352198 Author: Øyvind Kolås Date: Thu Jul 3 09:49:06 2008 +0000 * clutter/cogl/common/cogl-bitmap-pixbuf.c: (_cogl_bitmap_from_file): removed debug g_printf that announces each successful image load done by the internal image backend. common/cogl-bitmap-pixbuf.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) commit c4ca5e3e49894fef72f3186a23de5b7c49482442 Author: Emmanuele Bassi Date: Tue Jul 1 10:15:07 2008 +0000 2008-07-01 Emmanuele Bassi * cogl/cogl-docs.sgml: Add an index to the COGL API reference and the licensing information. doc/reference/cogl/cogl-docs.sgml | 48 +++++++++++++++++++++++++++++++++--- 1 files changed, 44 insertions(+), 4 deletions(-) commit add02e70a3fd74d8e161ad253dfc077959de024a Author: Neil Roberts Date: Mon Jun 30 16:15:53 2008 +0000 Bug 985 - MSC math.h / M_PI issue * clutter/cogl/gl/cogl.c (set_clip_plane): * clutter/clutter-alpha.c (sinc_func): Use G_PI instead of M_PI because M_PI isn't defined in MSVC without a special #define. Thanks to Haakon Sporsheim gl/cogl.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 1ec582becb070a37ea7dcd834d86f8521ad5ad63 Author: Emmanuele Bassi Date: Mon Jun 30 14:20:46 2008 +0000 2008-06-30 Emmanuele Bassi Bug 980 - cogl-bitmap-fallback.c compiler error/warning due to cast issue (Haakon Sporsheim) * clutter/cogl/common/cogl-bitmap-fallback.c: (_cogl_unpremult_alpha_last), (_cogl_unpremult_alpha_first): Cast to avoid a compiler warning with MSC. common/cogl-bitmap-fallback.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) commit 2666778c26c221bf68752e2c6a1bcb22975a4c7f Author: Matthew Allum Date: Fri Jun 27 23:02:30 2008 +0000 2008-06-27 Matthew Allum * clutter/cogl/gl/cogl.c: Temp workaround for 10.4 ATI card OSX folks, see #929 (Tommi Komulainen) Bug 998 - clutter always captures X input events * clutter/eglx/clutter-stage-egl.c: * clutter/glx/clutter-stage-glx.c: When we disable X event retrival, dont still select for window events. gl/cogl.c | 31 ++++++++++++++++++++++++++++++- 1 files changed, 30 insertions(+), 1 deletions(-) commit cbd77008ff02787320d47003767390f2fe5d7f97 Author: Neil Roberts Date: Tue Jun 24 16:21:40 2008 +0000 * clutter/cogl/gles/cogl-gles2-wrapper.h: * clutter/cogl/gles/cogl-gles2-wrapper.c: All of the settings and uniforms are now proxied into COGL variables instead of setting the GL uniforms directly. Just before glDrawArrays is executed a shader is generated using the given settings to avoid using 'if' statements. The shaders are cached. * clutter/cogl/gles/cogl-fixed-vertex-shader.glsl: * clutter/cogl/gles/cogl-fixed-fragment-shader.glsl: The shaders are now split into parts using comments instead of 'if' statements so that the simplest shader can be generated on the fly. * clutter/cogl/gles/stringify.sh: Now splits up the shader sources into separate C strings where deliminated by special comments. * clutter/cogl/gles/cogl-program.h: * clutter/cogl/gles/cogl-program.c: A custom shader can no longer be directly linked with the fixed-functionality replacement because the replacement changes depending on the settings. Instead the bound shader is linked with the appropriate replacement shader just before glDrawArrays is executed. The custom uniform variables must also be proxied through COGL variables because their location can change when relinked. gles/cogl-fixed-fragment-shader.glsl | 116 +++---- gles/cogl-fixed-vertex-shader.glsl | 50 ++-- gles/cogl-gles2-wrapper.c | 594 +++++++++++++++++++++++++++------- gles/cogl-gles2-wrapper.h | 110 ++++++-- gles/cogl-program.c | 152 ++++----- gles/cogl-program.h | 10 +- gles/stringify.sh | 19 +- 7 files changed, 719 insertions(+), 332 deletions(-) commit d12cfb39ba30c59220c0a0c4664357b54a2ff955 Author: Matthew Allum Date: Tue Jun 24 10:38:18 2008 +0000 2008-06-24 Matthew Allum * cogl/Makefile.am: * cogl/cogl-docs.sgml: * cogl/version.xml.in * clutter/version.xml.in Add full version (including minor) to docs. Add version to COGL docs doc/reference/cogl/Makefile.am | 4 ++-- doc/reference/cogl/cogl-docs.sgml | 10 ++++++---- doc/reference/cogl/version.xml.in | 1 + 3 files changed, 9 insertions(+), 6 deletions(-) commit 9cc9f750b8032f3de3038f4b65276cfc67220ea4 Author: Emmanuele Bassi Date: Mon Jun 23 16:43:49 2008 +0000 Fixes for distcheck common/Makefile.am | 21 +++++++++++---------- 1 files changed, 11 insertions(+), 10 deletions(-) commit 7c69ca2997a7efa9b7c94e962790dcae3fa2790c Author: Neil Roberts Date: Mon Jun 23 14:57:36 2008 +0000 Bug 918 - Group doesn't clip if it's children are clipped * clutter/cogl/common/cogl-clip-stack.h: * clutter/cogl/common/cogl-clip-stack.c: Added functions to maintain a stack of clipping rectangles. * clutter/cogl/gles/cogl.c: * clutter/cogl/gl/cogl.c: The cogl_clip_set and unset functions have moved into cogl-clip-stack.c which calls back to cogl.c to set the actual rectangles. Multiple clip rectangles are combined by merging the stencil buffers. * clutter/cogl/gles/cogl-primitives.c (_cogl_path_fill_nodes): * clutter/cogl/gl/cogl-primitives.c (_cogl_path_fill_nodes): Merge the stencil buffer with the contents of the clipping stack after drawing the path. * clutter/cogl/gles/cogl-context.h (CoglContext): * clutter/cogl/gl/cogl-context.h (CoglContext): Store the number of available stencil bits. * clutter/cogl/common/Makefile.am (libclutter_cogl_common_la_SOURCES): Added cogl-clip-stack.c common/Makefile.am | 3 +- common/cogl-clip-stack.c | 180 +++++++++++++++++++++++++ common/cogl-clip-stack.h | 37 +++++ gl/cogl-context.h | 1 + gl/cogl-primitives.c | 19 ++- gl/cogl.c | 326 ++++++++++++++++++++++++++++++++++++---------- gles/cogl-context.h | 1 + gles/cogl-primitives.c | 17 ++- gles/cogl.c | 292 +++++++++++++++++++++++++++++++++--------- 9 files changed, 735 insertions(+), 141 deletions(-) commit 76b5a93afa995085ed0faab2f84909c85096b0e0 Author: Emmanuele Bassi Date: Mon Jun 23 11:01:30 2008 +0000 2008-06-23 Emmanuele Bassi Bug 982 - __COGL_GET_CONTEXT MS compiler issue (Haakon Sporsheim) * clutter/cogl/common/cogl-handle.h: * clutter/cogl/common/cogl-primitives.c: Remove C99-isms. * clutter/cogl/gl/cogl-fbo.c: * clutter/cogl/gl/cogl-primitives.c: * clutter/cogl/gl/cogl-texture.c: * clutter/cogl/gl/cogl.c: Ditto as above. * clutter/cogl/gles/cogl-fbo.c: * clutter/cogl/gles/cogl-primitives.c: * clutter/cogl/gles/cogl-texture.c: Ditto as above. common/cogl-handle.h | 12 ++++++------ common/cogl-primitives.c | 13 +++++++------ gl/cogl-fbo.c | 26 +++++++++++++------------- gl/cogl-primitives.c | 8 ++++---- gl/cogl-texture.c | 14 ++++++-------- gl/cogl.c | 4 ++-- gles/cogl-fbo.c | 4 ++-- gles/cogl-primitives.c | 16 ++++++++-------- gles/cogl-texture.c | 24 +++++++++++------------- 9 files changed, 59 insertions(+), 62 deletions(-) commit d5a2697d6f7d0234c43db2a0c3ec81677819a82c Author: Matthew Allum Date: Mon Jun 16 16:31:08 2008 +0000 2008-06-16 Matthew Allum * cogl/cogl-docs.sgml: Add an intro. doc/reference/cogl/cogl-docs.sgml | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) commit c468bdb564815546c0e74bf9f31f0f5af2e70838 Author: Matthew Allum Date: Sat Jun 14 22:07:23 2008 +0000 Revert miscommit of unfinished cogl changes in r2920 gl/cogl-defines.h.in | 2 - gl/cogl-texture.c | 73 +++----------------------------------------------- gl/cogl-texture.h | 1 - 3 files changed, 4 insertions(+), 72 deletions(-) commit 6fe15aefb0c67c6edc5cbe53a6b166c5f89cb0ad Author: Matthew Allum Date: Fri Jun 13 23:03:45 2008 +0000 2008-06-14 Matthew Allum * README: Make needed GL version 1.4, note GLES2 support, add some notes for COGL. gl/cogl-defines.h.in | 2 + gl/cogl-texture.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++--- gl/cogl-texture.h | 1 + 3 files changed, 72 insertions(+), 4 deletions(-) commit 042cee7a5b136771c5504b7b4898cd9f48d1099b Author: Emmanuele Bassi Date: Thu Jun 12 17:21:16 2008 +0000 2008-06-12 Emmanuele Bassi * doc/reference/cogl/Makefile.am: Ignore cogl/gl and cogl/gles when building the documentation. * clutter/cogl/cogl.h.in: Add sections in the header file. cogl.h.in | 40 ++++++++++++++++++++++++++++++++++++++-- doc/reference/cogl/Makefile.am | 4 +++- 2 files changed, 41 insertions(+), 3 deletions(-) commit 57bf6593f0cde5700fa9b8893a28b918a2925ec8 Author: Chris Lord Date: Tue Jun 10 10:05:12 2008 +0000 * clutter/cogl/common/cogl-primitives.c: (_cogl_path_arc): Draw as expected when end angle is lower than start angle (i.e. do not swap the angles). This aligns with cairo behaviour. common/cogl-primitives.c | 34 +++++++++++++++++++++++++--------- 1 files changed, 25 insertions(+), 9 deletions(-) commit 5bd37a1113a7d20560149bce0102b5361a19d451 Author: Tommi Komulainen Date: Mon Jun 9 21:15:12 2008 +0000 cogl: add support for quartz imagebackend Bug #930 - add support for quartz imagebackend * clutter/cogl/common/cogl-bitmap-pixbuf.c (_cogl_bitmap_from_file): When USE_QUARTZ is defined implement using Core Graphics. * configure.ac: support --with-imagebackend=quartz and print which imagebackend is selected. Make quartz default on OSX common/cogl-bitmap-pixbuf.c | 114 ++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 112 insertions(+), 2 deletions(-) commit bbf536ac41b5d6d88b122a1e08b04957520ca7a3 Author: Chris Lord Date: Mon Jun 9 16:38:19 2008 +0000 * cogl/cogl-sections.txt: Add missing cogl_path_arc doc/reference/cogl/cogl-sections.txt | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit f3b121ac96f1fdff2cdee44c2c38d88ef06532ba Author: Øyvind Kolås Date: Mon Jun 9 16:14:06 2008 +0000 * clutter/cogl/common/cogl-primitives.c: (cogl_path_rel_curve_to): fixed naming of implementation of cogl_path_rel_curve_to (it was called just cogl_rel_curve_to). common/cogl-primitives.c | 13 ++++++------- 1 files changed, 6 insertions(+), 7 deletions(-) commit 2911fc03db02b9606b4e31ad0e173b8778e99383 Author: Neil Roberts Date: Fri Jun 6 14:21:22 2008 +0000 * clutter/eglnative/clutter-stage-egl.c (clutter_stage_egl_realize): Use ES 2 renderable type when building for GLES 2. * clutter/eglnative/clutter-event-egl.c (get_backend_time): Added a NULL for the microseconds parameter of g_timer_elapsed. * clutter/eglnative/clutter-stage-egl.h: * clutter/eglnative/clutter-egl.h: * clutter/eglnative/clutter-backend-egl.h: Include clutter-egl-headers.h instead of including the GL headers directly so it can include gl2.h when building for GLES 2. * clutter/eglnative/clutter-egl-headers.h: * clutter/eglnative/Makefile.am (libclutter_eglnative_la_SOURCES): Added clutter-egl-headers.h * clutter/cogl/gles/cogl-fixed-fragment-shader.glsl: GLES 2 doesn't provide a default precision for floats in the fragment shader and it will reject the shader if there isn't one. gles/cogl-fixed-fragment-shader.glsl | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 04845aa9c9960cbb0673a70a36291ac84090d5de Author: Matthew Allum Date: Fri Jun 6 13:44:22 2008 +0000 2008-06-06 Matthew Allum Bug #948 - Remove texture rectangle support * clutter/clutter-feature.c: * clutter/clutter-feature.h: * clutter/clutter-texture.c: * clutter/cogl/gl/cogl.c: * clutter/glx/clutter-glx-texture-pixmap.c: Remove support for GL_TEXTURE_RECTANGLE_ARB (now using just regular 2D textures, with optional npots extension). Simplifys code, + makes mipmap & shader support much more sane. gl/cogl-texture.c | 69 +++++++---------------------------------------------- gl/cogl.c | 13 ---------- 2 files changed, 9 insertions(+), 73 deletions(-) commit 1ee75faaa4aa604db23509416c64b948fa2957a5 Author: Øyvind Kolås Date: Fri Jun 6 12:53:35 2008 +0000 * clutter/cogl/common/cogl-bitmap-pixbuf.c: (_cogl_bitmap_from_file): allocate height×rowstride and not duplicate gdkpixbuf's strange optimization saving some bytes at the end of the pixbuf. common/cogl-bitmap-pixbuf.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) commit 93abcf9595247696235131b4bf21e9053f872b9e Author: Tommi Komulainen Date: Thu Jun 5 21:40:59 2008 +0000 cogl: define GL_READ/DRAW_FRAMEBUFFER_EXT if not available Bug 913 - cogl fails to build on OSX * clutter/cogl/gl/cogl-fbo.c: define GL_READ_FRAMEBUFFER_EXT and GL_DRAW_FRAMEBUFFER_EXT if not defined in the build system. The #ifdef can fail if they're not #defines but variables or enums. As the values are supposed to be industry standard even then it shouldn't have ill effects. gl/cogl-fbo.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) commit e306b0135cd9fc4e5b03e1f6a89199c68e60bfbd Author: Neil Roberts Date: Mon Jun 2 12:34:10 2008 +0000 Applied 'final patch' from bug #874 * clutter/cogl/gles/cogl.c: * clutter/cogl/gl/cogl.c: The clip planes are now set using the inverse projection matrix as the modelview matrix so that they can be specified in screen coordinates. * clutter/cogl/gles/cogl-context.h (CoglContext): * clutter/cogl/gl/cogl-context.h (CoglContext): Added a member to cache the inverse projection matrix * clutter/clutter-fixed.h: Added a constant for converting from radians to degrees. * clutter/clutter-fixed.c (clutter_atani, clutter_atan2i): Added fixed-point versions of atan and atan2. * tests/test-clip.c: Added a test for clipping with various rotations and depths. * tests/Makefile.am (noinst_PROGRAMS): Added test-clip gl/cogl-context.h | 3 + gl/cogl.c | 139 +++++++++++++++++++++++++++++++++++++++++++++------ gles/cogl-context.h | 3 + gles/cogl.c | 132 +++++++++++++++++++++++++++++++++++++++++++----- 4 files changed, 248 insertions(+), 29 deletions(-) commit 165531074bf76ad4a6b8f5d043b702dfa251cd97 Author: Neil Roberts Date: Mon Jun 2 10:58:57 2008 +0000 * clutter/cogl/gles/cogl-gles2-wrapper.h: The uniform numbers are now stored in a separate struct so they can be stored for application program objects as well. * clutter/cogl/gles/cogl.c: Moved stub shader functions into separate files. (_cogl_features_init): Report support for the shaders feature on GLES 2 * clutter/cogl/gles/cogl-shader.h: * clutter/cogl/gles/cogl-shader.c: * clutter/cogl/gles/cogl-program.h: * clutter/cogl/gles/cogl-program.c: Separate files to handle shaders on programs on GLES. If version 1.1 is being used then the stub functions which all fail are still used. * clutter/cogl/gles/cogl-gles2-wrapper.c (cogl_gles2_wrapper_init, cogl_gles2_wrapper_bind_attributes), (cogl_gles2_wrapper_get_uniforms): Move the uniforms and attribute bindings into a separate function so they can be used to bind on application shaders as well. (cogl_gles2_wrapper_update_matrix): Now takes a parameter and is no longer static so that it can be used to update all of the matrices when a new shader is bound. * clutter/cogl/gles/cogl-defines.h.in: Use GL_COMPILE_STATUS for CGL_OBJECT_COMPILE_STATUS if the latter isn't available (for example on GLES 2). * clutter/cogl/gles/cogl-context.h (CoglContext): Added handle arrays for programs and shaders. * clutter/cogl/gles/cogl-context.c (cogl_create_context) (cogl_destroy_context): Initialize and destroy program and shader handle array. * clutter/cogl/gles/Makefile.am (libclutter_cogl_la_SOURCES): Add cogl-{shader,program}.{c,h} gles/Makefile.am | 6 +- gles/cogl-context.c | 11 ++ gles/cogl-context.h | 4 + gles/cogl-defines.h.in | 6 +- gles/cogl-gles2-wrapper.c | 144 ++++++++++++++----------- gles/cogl-gles2-wrapper.h | 27 ++++- gles/cogl-program.c | 257 +++++++++++++++++++++++++++++++++++++++++++++ gles/cogl-program.h | 50 +++++++++ gles/cogl-shader.c | 184 ++++++++++++++++++++++++++++++++ gles/cogl-shader.h | 40 +++++++ gles/cogl.c | 107 +------------------ 11 files changed, 661 insertions(+), 175 deletions(-) commit 46be48f8f6c82ee0704fda02567dafab3dc893c0 Author: Neil Roberts Date: Mon Jun 2 09:35:43 2008 +0000 * clutter/cogl/gl/cogl-context.c (cogl_destroy_context): Fix cut-and-paste error where the wrong arrays were being freed. gl/cogl-context.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 559495caf71ba38b38950750e0a3c094b61b8ed3 Author: Neil Roberts Date: Thu May 29 13:29:04 2008 +0000 * clutter/cogl/gles/cogl-gles2-wrapper.h (CoglGles2Wrapper): Added uniforms for alpha testing. * clutter/cogl/gles/cogl-gles2-wrapper.c (cogl_gles2_wrapper_init): Get the uniforms for alpha testing settings. (cogl_wrap_glEnable, cogl_wrap_glDisable): Enable/disable alpha testing. (cogl_wrap_glAlphaFunc): Filled in the wrapper. * clutter/cogl/gles/cogl-fixed-fragment-shader.glsl: Added alpha testing. * clutter/cogl/gles/cogl-gles2-wrapper.h: * clutter/cogl/gles/cogl-gles2-wrapper.c (cogl_wrap_glGetIntegerv): Added a wrapper for glGetIntegerv so that it can report zero clip planes. * clutter/cogl/gles/cogl.c: * clutter/cogl/gles/cogl-texture.c: Use the wrapped version of glGetIntegerv * clutter/cogl/gles/cogl-primitives.c (_cogl_path_fill_nodes): Use _cogl_features_available to check for the stencil buffer instead of an #ifdef. The stencil buffer is available in the default profile for the GLES 2 simulator. gles/cogl-fixed-fragment-shader.glsl | 51 +++++ gles/cogl-gles2-wrapper.c | 46 +++++- gles/cogl-gles2-wrapper.h | 6 + gles/cogl-primitives.c | 338 +++++++++++++++++----------------- gles/cogl-texture.c | 10 +- gles/cogl.c | 12 +- 6 files changed, 283 insertions(+), 180 deletions(-) commit 38c9d46a0e80f71218855fa9d58c98df981a6000 Author: Neil Roberts Date: Wed May 28 17:14:17 2008 +0000 * clutter/cogl/gles/cogl-gles2-wrapper.c (cogl_gles2_wrapper_init): Get uniforms for fog parameters and initialise them. (cogl_wrap_glDrawArrays): Store the modelview matrix in a uniform as well so that it can be used for fogging calculations. (cogl_wrap_glEnable, cogl_wrap_glDisable): Enable/disable fogging. (cogl_wrap_glFogx, cogl_wrap_glFogxv): Fill in wrapper to set fogging parameters. * clutter/cogl/gles/cogl-fixed-vertex-shader.glsl: Calculate the fog amount if fogging is enabled. * clutter/cogl/gles/cogl-fixed-fragment-shader.glsl: Mix with fog color. * clutter/cogl/gles/cogl-gles2-wrapper.h (CoglGles2Wrapper): Add uniforms for fogging. gles/cogl-fixed-fragment-shader.glsl | 13 +++++- gles/cogl-fixed-vertex-shader.glsl | 48 ++++++++++++++++++++--- gles/cogl-gles2-wrapper.c | 69 ++++++++++++++++++++++++++++++++-- gles/cogl-gles2-wrapper.h | 8 ++++ 4 files changed, 125 insertions(+), 13 deletions(-) commit fe1c9db0116365aa8c5ee3a2c7308460e6bc23af Author: Neil Roberts Date: Wed May 28 13:17:03 2008 +0000 * clutter/cogl/gles/Makefile.am: Use old-style Makefile rules for the stringify script so that automake won't complain. gles/Makefile.am | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit afe17c50a4fa441915c4f60d628a37b48335ffb9 Author: Neil Roberts Date: Wed May 28 11:29:58 2008 +0000 * clutter/cogl/gles/cogl-gles2-wrapper.c (cogl_wrap_glGetFixedv): Filled in the wrapper for glGetFixedv gles/cogl-gles2-wrapper.c | 34 +++++++++++++++++++++++++++++++++- 1 files changed, 33 insertions(+), 1 deletions(-) commit 49752b06d388587e0740d3c6cec827718261aa3c Author: Neil Roberts Date: Wed May 28 10:47:21 2008 +0000 * clutter/cogl/gles/cogl-texture.c: Use the wrapper for glTexParameteri. Call glGenerateMipmap after every change to the texture image data. * clutter/cogl/gles/cogl-gles2-wrapper.h: * clutter/cogl/gles/cogl-gles2-wrapper.c: Added a wrapper for glTexParameteri so that it can ignore requests to set GL_GENERATE_MIPMAP. Added a wrapper for glGenerateMipmap that does nothing on GLES 1 gles/cogl-gles2-wrapper.c | 7 +++++++ gles/cogl-gles2-wrapper.h | 10 ++++++++++ gles/cogl-texture.c | 33 ++++++++++++++++++++++++--------- 3 files changed, 41 insertions(+), 9 deletions(-) commit f177aedcffbf139c77820f1b981a77ca96a2838e Author: Neil Roberts Date: Tue May 27 17:42:50 2008 +0000 GLES 2 backend * clutter/eglx/clutter-stage-egl.h: * clutter/eglx/clutter-egl-headers.h: * clutter/eglx/clutter-backend-egl.h: * clutter/eglx/Makefile.am: Include the GLES and EGL headers via clutter-egl-headers.h so that the right version can be used depending on whether the GLES 2 wrapper is being used. * configure.ac: Added an automake conditional for whether the GLES 2 wrapper should be used. * clutter/eglx/clutter-stage-egl.c (clutter_stage_egl_realize): Remove the call to glGetIntegerv to get the max texture size. It was being called before the GL context was bound so it didn't work anyway and it was causing trouble for the GLES 2 simulator. * clutter/cogl/gles/stringify.sh: Shell script to convert the shaders into a C string. * clutter/cogl/gles/cogl-gles2-wrapper.h: * clutter/cogl/gles/cogl-gles2-wrapper.c: Wrappers for most of the missing GL functions in GLES 2. * clutter/cogl/gles/cogl-fixed-fragment-shader.glsl: * clutter/cogl/gles/cogl-fixed-vertex-shader.glsl: New shaders for GLES 2 * clutter/cogl/gles/cogl-defines.h.in: Use the @CLUTTER_GL_HEADER@ macro instead of always using the GLES 1 header. * clutter/cogl/gles/cogl-context.h (CoglContext): Include a field for the state of the GLES 2 wrapper. * clutter/cogl/gles/cogl-texture.c: * clutter/cogl/gles/cogl-primitives.c: * clutter/cogl/gles/cogl.c: Use wrapped versions of the GL functions where neccessary. * clutter/cogl/gles/Makefile.am: Add sources for the GLES 2 wrapper and an extra build step to put the GLSL files into a C string whenever the files change. gles/Makefile.am | 25 ++- gles/cogl-context.c | 14 +- gles/cogl-context.h | 6 + gles/cogl-defines.h.in | 4 +- gles/cogl-fixed-fragment-shader.glsl | 29 ++ gles/cogl-fixed-vertex-shader.glsl | 26 ++ gles/cogl-gles2-wrapper.c | 632 ++++++++++++++++++++++++++++++++++ gles/cogl-gles2-wrapper.h | 194 +++++++++++ gles/cogl-primitives.c | 24 +- gles/cogl-texture.c | 78 +++-- gles/cogl.c | 126 ++++---- gles/stringify.sh | 65 ++++ 12 files changed, 1108 insertions(+), 115 deletions(-) commit e50099a2065bbdf6e38b6c2102908bf04948723f Author: Emmanuele Bassi Date: Fri May 23 15:23:40 2008 +0000 2008-05-23 Emmanuele Bassi Bug #912 - Invalid use of int* as parameter for glGetIntegerv * clutter/cogl/gl/cogl.c (_cogl_features_init): Use GLint instead of int. (#912, Tommi Komulainen) gl/cogl.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit eccd9399e59daea356c30d66a77e08bf3a07e44c Author: Neil Roberts Date: Wed May 21 13:20:33 2008 +0000 * clutter/cogl/gl/cogl.c (error_string): * clutter/cogl/gles/cogl.c (error_string): Rename to _cogl_error_string and remove the static scoping so that it can be called in cogl-texture etc. * clutter/cogl/gl/cogl-texture.c (cogl_texture_new_from_foreign): * clutter/cogl/gles/cogl-texture.c (cogl_texture_new_from_foreign): GE(*) can't be used to wrap around calls that use the return value. * clutter/cogl/gl/cogl-texture.c (_cogl_texture_quad_sw) (_cogl_texture_quad_hw, cogl_texture_polygon): Remove GE(*) wrapper around calls in the middle of a glBegin/glEnd pair which otherwise always generate an error because glGetError can only be called outside of the pair. * clutter/cogl/gl/cogl-internal.h: Include stdio.h when definig COGL_DEBUG and declare a prototype for _cogl_error_string. * clutter/cogl/gles/cogl-internal.h: Match GE(*) macro to GL version. gl/cogl-internal.h | 16 +++++++++++--- gl/cogl-texture.c | 52 +++++++++++++++++++++++++------------------------- gl/cogl.c | 4 +- gles/cogl-internal.h | 21 +++++++++++++------ gles/cogl-texture.c | 2 +- gles/cogl.c | 4 +- 6 files changed, 57 insertions(+), 42 deletions(-) commit 091c79b9ae60c43b0b5e5854261ccc6966264ab4 Author: Ivan Leben Date: Wed May 21 10:00:08 2008 +0000 * clutter/cogl/gles/cogl-texture.c: (_cogl_texture_download_from_gl:) Only comment out the broken check for framebuffer alpha bits, not the check for alpha in texture format. gles/cogl-texture.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 4cb0d58cebf7a027f1e3d3c91f277a5f315ed30a Author: Ivan Leben Date: Tue May 20 10:37:36 2008 +0000 * clutter/cogl/gles/cogl-texture.c: (cogl_texture_download_from_gl:) Implemented a workaround for missing alpha framebuffer channel. There are still some issues with detecting whether alpha is present in the framebuffer. See comments in code. Test-cogl-tex-getset now successfully retrieves a RGBA texture image data. gles/cogl-texture.c | 276 ++++++++++++++++++++++++++++++++------------------- 1 files changed, 172 insertions(+), 104 deletions(-) commit 006573ac61bc32e2d46a8146358c56392abe8536 Author: Ivan Leben Date: Mon May 19 15:21:56 2008 +0000 * clutter/cogl/gles/cogl-texture.c: (cogl_texture_download_from_gl:) Store old blending factors and restore them when done. The lack of ability to retrieve the alpha channel now more noticable in test-cogl-tex-getset since the edges of the hand are not antialiased. * clutter/cogl/gl(es)/cogl-internal.h: Declare cogl_blend_func to avoid "implicit implementation" compile warning. gl/cogl-internal.h | 4 ++++ gles/cogl-internal.h | 4 ++++ gles/cogl-texture.c | 11 +++++++++-- 3 files changed, 17 insertions(+), 2 deletions(-) commit d049d9ead4c5174d99fd506ee3f5ea256f248d90 Author: Ivan Leben Date: Mon May 19 15:02:27 2008 +0000 * clutter/cogl/gl(es)/cogl.c: New internal function cogl_blend_func caches blending setup much like cogl_enable does with the enable flags. This separates blending factors setup from the enable/disable operation in preparation of the texture image retrieval fix for alpha channel on GLES. (cogl_enable:) Does not modify blending factors anymore. * clutter/cogl/gl(es)/cogl-context.h: CoglContext holds two new variables to cache blending src and dst factors. * clutter/cogl/gl(es)/cogl-context.c: (cogl_create_context:) Initialize blending factors. * clutter/cogl/gles/cogl-texture.c: (cogl_texture_download_from_gl:) Set blending factors to CGL_ONE, CGL_ZERO which fixes the slighlty improper behavior where source colour was actually multiplied with its alpha value in the result (not noticable on current tests). gl/cogl-context.c | 8 ++++- gl/cogl-context.h | 2 + gl/cogl.c | 65 ++++++++++---------------------------------------- gles/cogl-context.c | 8 ++++- gles/cogl-context.h | 2 + gles/cogl-texture.c | 2 + gles/cogl.c | 26 +++++++++++++++---- 7 files changed, 51 insertions(+), 62 deletions(-) commit ae444ad679a8ffff7f641427586b48e5223a10e9 Author: Neil Roberts Date: Fri May 16 11:09:59 2008 +0000 Use the Mesa headers instead of depending on GLee for Win32 builds. * configure.ac: No longer check for GLee * clutter/cogl/gl/cogl-defines.h.in: Don't bother including GLee.h * build/mingw/mingw-cross-compile.sh: No longer downloads libGLee but downloads the Mesa library instead and installs the headers from that. Fixed the libpng version. gl/cogl-defines.h.in | 9 --------- 1 files changed, 0 insertions(+), 9 deletions(-) commit ef627f1a5e8b82fec0273d8cca3572fdb83f7061 Author: Øyvind Kolås Date: Wed May 14 11:10:45 2008 +0000 * clutter/cogl/gles/cogl.c: (_cogl_features_init): do not set COGL_FEATURE_TEXTURE_READ_PIXELS, since it is not available. gles/cogl.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) commit 02ab70efc8f08498566efb778b8fd65927c74465 Author: Ivan Leben Date: Tue May 13 04:56:06 2008 +0000 * clutter/cogl/gl/cogl-defines.h.in: Fix GL function prototypes on OS X by #definining APIENTRY and APIENTRYP if missing. gl/cogl-defines.h.in | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) commit 3a3712d924b221bb68a8f2dd9cb13233e4251a55 Author: Ivan Leben Date: Mon May 12 17:20:22 2008 +0000 * clutter/cogl/gl/cogl-defines.h.in: Defined GL extension functions used by Cogl inside the COGL_ namespace. * clutter/cogl/gl/cogl-context.h: * clutter/cogl/gl/cogl.c: Use COGL_ extension function prototypes instead of relying on glext.h to define them. Should fix the mac compilability bug, but haven't tested it yet. gl/cogl-context.h | 46 ++++++++-------- gl/cogl-defines.h.in | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++ gl/cogl.c | 46 ++++++++-------- 3 files changed, 184 insertions(+), 46 deletions(-) commit b9827fb94526634005f1d3f8dc91f8a68f6d9f4b Author: Ivan Leben Date: Wed May 7 16:12:54 2008 +0000 * clutter/cogl/cogl.h.in: * clutter/cogl/gl(es)/cogl-texture.h: * clutter/cogl/gl(es)/cogl-texture.c: cogl_texture_new_* functions take a gboolean auto_mipmap argument. If TRUE automatic mipmap generation is enabled during the process of slice texture object creation. (cogl_texture_new_from_foreign:) now allows mipmap min filter flags. * clutter/clutter-texture.c: * clutter/glx/clutter-glx-texture-pixmap.c: * tests/test-cogl-offscreen.c: * tests/test-cogl-tex-tile.c: * tests/test-cogl-tex-convert.c: * tests/test-cogl-tex-polygon.c: * tests/test-cogl-tex-getset.c: Pass FALSE for auto_mipmap to cogl_texture_new_*. * clutter/pango/pangoclutter-render.c: (tc_get:) Pass TRUE to cogl_texture_new_with_size and use mipmap min filter for nicer glyphs at small scales. As a result test-text has gone all beautiful now. cogl.h.in | 9 +++++++++ gl/cogl-texture.c | 36 ++++++++++++++++++------------------ gl/cogl-texture.h | 1 + gles/cogl-texture.c | 40 ++++++++++++++++++++-------------------- gles/cogl-texture.h | 1 + 5 files changed, 49 insertions(+), 38 deletions(-) commit 073870dbbfb54c248afcf2357bcd6624d82f2d90 Author: Øyvind Kolås Date: Mon May 5 12:01:19 2008 +0000 * clutter/cogl/gl/cogl-primitives.c: * clutter/cogl/gles/cogl-primitives.c: * clutter/cogl/common/cogl-primitives.c: moved declaration of gegl_rectangle and gegl_rectanglex here to satisfy linking requirements when building the fruity backend. common/cogl-primitives.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++ gl/cogl-primitives.c | 41 ++++++++----------------------------- gles/cogl-primitives.c | 42 +++++++++----------------------------- 3 files changed, 69 insertions(+), 64 deletions(-) commit f2b44899f9889e4b11dfb4f362142aa02a390fae Author: Øyvind Kolås Date: Mon May 5 10:25:11 2008 +0000 * clutter/cogl/cogl.h.in: api review touch ups. * clutter/cogl/common/cogl-primitives.c: api review touch ups. * clutter/cogl/gl/cogl-primitives.c: (cogl_path_fill), (cogl_path_stroke): indentation. * clutter/cogl/gles/cogl-primitives.c: (_cogl_path_fill_nodes): free allocated resources. * tests/test-cogl-primitives.c: updated to new API, added rotation to test to show that cogl renders paths correct under perspective distortion. cogl.h.in | 45 +------ common/cogl-primitives.c | 318 ++++++++++++++++++++++++---------------------- gl/cogl-primitives.c | 53 +-------- gles/cogl-primitives.c | 58 +-------- 4 files changed, 176 insertions(+), 298 deletions(-) commit bbe138298c63cf0a709d466e8419dc7be1d9303a Author: Øyvind Kolås Date: Thu May 1 11:27:58 2008 +0000 * clutter/cogl/gles/cogl-primitives.c: (_cogl_path_fill_nodes): draw the rasterized scanlines as an array of triangles. gles/cogl-primitives.c | 99 +++++++++++++++++++++++++++++++++++------------ 1 files changed, 73 insertions(+), 26 deletions(-) commit 0b7cab090c39e933445febeb39c03a2c1aa22de2 Author: Øyvind Kolås Date: Wed Apr 30 21:48:47 2008 +0000 * clutter/cogl/gles/cogl-primitives.c: (_cogl_path_fill_nodes): keep track of direction we are drawing in and make sure we leave two intersection points when we have changed direction. gles/cogl-primitives.c | 22 ++++++++++++++++++++-- 1 files changed, 20 insertions(+), 2 deletions(-) commit 97b3499c5293db58ba2fe099c6f75aa597ece7a7 Author: Øyvind Kolås Date: Wed Apr 30 16:57:21 2008 +0000 * clutter/cogl/gles/cogl-primitives.c: (_cogl_path_fill_nodes): scanline rasterizer fallback for GLES without working stencil buffer (would benefit from optimization/smarter choice of datastructures). gles/cogl-primitives.c | 106 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 102 insertions(+), 4 deletions(-) commit 96f679a18bf3741fcabdb2e7f9c543a58fd61743 Author: Øyvind Kolås Date: Wed Apr 30 15:05:17 2008 +0000 * clutter/cogl/common/Makefile.am: * clutter/cogl/common/cogl-primitives.c: * clutter/cogl/common/cogl-primitives.h: * clutter/cogl/gl/Makefile.am: * clutter/cogl/gl/cogl-primitives.c: * clutter/cogl/gl/cogl-primitives.h: * clutter/cogl/gles/Makefile.am: * clutter/cogl/gles/cogl-primitives.c: * clutter/cogl/gles/cogl-primitives.h: moved duplicated code to the common directory. common/Makefile.am | 2 + common/cogl-primitives.c | 541 ++++++++++++++++++++++++++++++++++++++++++++++ common/cogl-primitives.h | 63 ++++++ gl/Makefile.am | 1 - gl/cogl-primitives.c | 505 +------------------------------------------ gl/cogl-primitives.h | 61 ------ gles/Makefile.am | 1 - gles/cogl-primitives.c | 511 +------------------------------------------- gles/cogl-primitives.h | 54 ----- 9 files changed, 615 insertions(+), 1124 deletions(-) commit 0e0890a2e9a06680fe702170b2c52f4acba00e7b Author: Neil Roberts Date: Tue Apr 29 16:10:37 2008 +0000 Removed COGLhandle and changed shader and program functions to be wrapped in reference-counted CoglHandles instead. * clutter/cogl/gl/cogl-shader.c: * clutter/cogl/gl/cogl-shader.h: * clutter/cogl/gl/cogl-program.c: * clutter/cogl/gl/cogl-program.h: New files to hold the shader and program functions. * clutter/cogl/gl/cogl.c: Removed shader and program functions. * clutter/cogl/common/cogl-handle.h: New header to define COGL_HANDLE_DEFINE which helps build functions to create reference-counted handles. This reduces the amount of duplicated code. * clutter/cogl/gl/cogl-texture.c: * clutter/cogl/gles/cogl-texture.c: * clutter/cogl/gl/cogl-fbo.c: Converted to use COGL_HANDLE_DEFINE from cogl-handle.h to avoid duplicating some of the common code. * clutter/cogl/gles/cogl-defines.h.in: * clutter/cogl/gl/cogl-defines.h.in: Removed COGLhandle * clutter/cogl/gl/cogl-context.h: Added handle arrays for programs and shaders. * clutter/cogl/gl/cogl-context.c (cogl_create_context): Added initialisers for shader_handles and program_handles. (cogl_destroy_context): Added calls to g_array_free for all handle arrays. * clutter/cogl/gl/Makefile.am (libclutter_cogl_la_SOURCES): Added cogl-{program,shader}.{c,h} * clutter/cogl/common/Makefile.am (libclutter_cogl_common_la_SOURCES): Added cogl-handle.h * clutter/cogl/gles/cogl.c: * clutter/cogl/cogl.h.in: Programs and shaders are now wrapped in CoglHandles instead of COGLhandles. cogl_program_destroy and cogl_shader_destroy is now replaced with cogl_program_unref and cogl_shader_unref. cogl_program_ref and cogl_shader_ref are also added. * clutter/clutter-shader.c: Converted to use CoglHandles for the programs and shaders instead of COGLhandles. * cogl/cogl-sections.txt: Added cogl_shader_ref, cogl_shader_unref, cogl_is_shader, cogl_program_ref, cogl_program_unref, cogl_is_program and cogl_is_offscreen. cogl.h.in | 125 +++++++++++++++++++------- common/Makefile.am | 1 + common/cogl-handle.h | 160 ++++++++++++++++++++++++++++++++++ doc/reference/cogl/cogl-sections.txt | 9 ++- gl/Makefile.am | 4 + gl/cogl-context.c | 13 +++ gl/cogl-context.h | 6 ++ gl/cogl-defines.h.in | 1 - gl/cogl-fbo.c | 124 +++++--------------------- gl/cogl-program.c | 150 +++++++++++++++++++++++++++++++ gl/cogl-program.h | 39 ++++++++ gl/cogl-shader.c | 136 +++++++++++++++++++++++++++++ gl/cogl-shader.h | 39 ++++++++ gl/cogl-texture.c | 153 ++------------------------------ gl/cogl.c | 119 ------------------------- gles/cogl-defines.h.in | 1 - gles/cogl-texture.c | 129 ++-------------------------- gles/cogl.c | 66 ++++++++++----- 18 files changed, 729 insertions(+), 546 deletions(-) commit f2b367c092e0757629fa5a397e54de0c1539fd7c Author: Øyvind Kolås Date: Tue Apr 29 15:58:32 2008 +0000 * cogl/cogl-sections.txt: updated after cogl primitives api rename session. doc/reference/cogl/cogl-sections.txt | 39 ++++++++++++--------------------- 1 files changed, 14 insertions(+), 25 deletions(-) commit 6a4cdd6e4935e90267845badb7b1049f7eafaf0e Author: Øyvind Kolås Date: Tue Apr 29 15:41:34 2008 +0000 * clutter/cogl/cogl.h.in: renaming of API's in cogl to make the primitives and path API a bit smaller and more resembling cairo. * clutter/cogl/gl/cogl-primitives.c: * clutter/cogl/gles/cogl-primitives.c: * clutter/cogl/gles/cogl.c: * clutter/clutter-actor.c: * clutter/clutter-rectangle.c: * tests/test-cogl-offscreen.c: * tests/test-cogl-primitives.c: * tests/test-cogl-tex-convert.c: * tests/test-cogl-tex-foreign.c: * tests/test-cogl-tex-getset.c: * tests/test-cogl-tex-tile.c: updated according to changes in cogl. cogl.h.in | 236 +++++++++--------------------------- gl/cogl-primitives.c | 185 +++++++++++------------------ gles/cogl-primitives.c | 312 +++++++++++++++++------------------------------- gles/cogl.c | 2 +- 4 files changed, 242 insertions(+), 493 deletions(-) commit 0077d427a8ad83d1e310c9b0c744418be8dd610f Author: Robert Bragg Date: Tue Apr 29 12:44:41 2008 +0000 2008-04-29 Robert Bragg * clutter/cogl/gles/cogl-texture.c: Replaces an malloc call with g_malloc. gles/cogl-texture.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 046569f090fb23b6dbb16493e150685c88b3266b Author: Neil Roberts Date: Mon Apr 28 16:57:44 2008 +0000 Fixed 'make dist' * clutter/cogl/Makefile.am (EXTRA_DIST): Distribute cogl.h.in instead of cogl.h (DIST_SUBDIRS): Added common folder * clutter/cogl/gl/Makefile.am (libclutter_cogl_la_SOURCES): Remove cogl-defines.h and use the right location for cogl-defines.gl.h (EXTRA_DIST): Distribute cogl-defines.h.in * clutter/cogl/gles/Makefile.am (libclutter_cogl_la_SOURCES): Remove cogl-defines.h and use the right location for cogl-defines.gles.h (EXTRA_DIST): Distribute cogl-defines.h.in * clutter/Makefile.am (DIST_SUBDIRS): Add fruity Makefile.am | 4 ++-- gl/Makefile.am | 5 +++-- gles/Makefile.am | 5 +++-- 3 files changed, 8 insertions(+), 6 deletions(-) commit 2f1dc5b9d89c512eddfc06ff3d8641d1cc48603e Author: Neil Roberts Date: Mon Apr 28 16:03:06 2008 +0000 * clutter/cogl/cogl.h.in (COGL_A_BIT): Added the missing comma after COGL_PIXEL_FORMAT_G_8 cogl.h.in | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 445ee175156e14ae0a53d9d9ad88a1cf1630e538 Author: Øyvind Kolås Date: Mon Apr 28 15:36:11 2008 +0000 * clutter/cogl/cogl.h.in: reindented. cogl.h.in | 725 ++++++++++++++++++++++++++++--------------------------------- 1 files changed, 333 insertions(+), 392 deletions(-) commit 4c1f671e132a979e5b5bf14b0d2b2069c067d602 Author: Emmanuele Bassi Date: Mon Apr 28 15:22:54 2008 +0000 2008-04-28 Emmanuele Bassi * clutter/clutter-docs.sgml: Add index for the 0.8 symbols. * clutter/Makefile.am: * cogl/Makefile.am: Revert back, as EXTRA_DIST has been defined by gtk-doc.make and automake-1.9 complains loudly about a redefinition of EXTRA_DIST. doc/reference/cogl/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 2b7ff6fed0211f5230a27a9fcc072ebbb4241c9d Author: Øyvind Kolås Date: Mon Apr 28 14:18:29 2008 +0000 * clutter/cogl/cogl.h.in: moved the documentation of the cogl primitives to the main public header. * clutter/cogl/gl/cogl-primitives.c: from here .. * clutter/cogl/gles/cogl-primitives.c: .. _and_ here. cogl.h.in | 323 ++++++++++++++++++++++++++++++++++++++++++++++++ gl/cogl-primitives.c | 320 +---------------------------------------------- gles/cogl-primitives.c | 263 --------------------------------------- 3 files changed, 329 insertions(+), 577 deletions(-) commit e183712227f7ace27ba5309d9b515d28eab2f6b8 Author: Øyvind Kolås Date: Mon Apr 28 14:00:46 2008 +0000 * clutter/cogl/cogl.h.in: added documentation. cogl.h.in | 478 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 460 insertions(+), 18 deletions(-) commit eff57a1cb0543ef4e172885352db5ba0b14cca2a Author: Neil Roberts Date: Fri Apr 25 13:37:36 2008 +0000 Merged clutter-ivan branch into trunk. svn merge \ https://svn.o-hand.com/repos/clutter/trunk/clutter@2509 \ https://svn.o-hand.com/repos/clutter/branches/clutter-ivan@HEAD Makefile.am | 2 +- TODO | 25 + cogl.h | 290 --- cogl.h.in | 874 ++++++++ common/Makefile.am | 23 + common/cogl-bitmap-fallback.c | 369 ++++ common/cogl-bitmap-pixbuf.c | 197 ++ common/cogl-bitmap.c | 150 ++ common/cogl-bitmap.h | 95 + common/cogl-util.c | 51 + common/cogl-util.h | 32 + common/stb_image.c | 3772 ++++++++++++++++++++++++++++++++++ doc/reference/cogl/Makefile.am | 93 + doc/reference/cogl/cogl-docs.sgml | 57 + doc/reference/cogl/cogl-sections.txt | 148 ++ gl/Makefile.am | 37 +- gl/cogl-context.c | 114 + gl/cogl-context.h | 95 + gl/cogl-fbo.c | 390 ++++ gl/cogl-fbo.h | 38 + gl/cogl-internal.h | 61 + gl/cogl-primitives.c | 1092 ++++++++++ gl/cogl-primitives.h | 61 + gl/cogl-texture.c | 2303 +++++++++++++++++++++ gl/cogl-texture.h | 64 + gl/cogl.c | 810 ++++---- gles/Makefile.am | 37 +- gles/cogl-context.c | 96 + gles/cogl-context.h | 78 + gles/cogl-defines.h | 486 ----- gles/cogl-defines.h.in | 474 +++++ gles/cogl-fbo.c | 188 ++ gles/cogl-fbo.h | 38 + gles/cogl-internal.h | 63 + gles/cogl-primitives.c | 1112 ++++++++++ gles/cogl-primitives.h | 54 + gles/cogl-texture.c | 2185 ++++++++++++++++++++ gles/cogl-texture.h | 63 + gles/cogl-util.c | 51 + gles/cogl-util.h | 32 + gles/cogl.c | 457 ++--- 41 files changed, 15145 insertions(+), 1512 deletions(-) commit b70bf89cedc8399c68e34c5550f3a682d426b3e6 Author: Matthew Allum Date: Mon Apr 14 15:10:22 2008 +0000 2008-04-14 Matthew Allum * clutter/cogl/gles/cogl.c: (cogl_color): Disable use of color4ub, issues with latest MBX SDL (#857) * clutter/eglx/clutter-backend-egl.c: * clutter/eglx/clutter-stage-egl.c: * configure.ac: Fixup for the eglx backend to work with new backend/multistage code. Some issues remain in destroying stages. gles/cogl.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) commit 0d6530e434145f1d5568fe35afc145447504954d Author: Emmanuele Bassi Date: Wed Apr 9 14:18:42 2008 +0000 2008-04-09 Emmanuele Bassi * clutter/Makefile.am: Update the regular expression to match all the namespaces we actually use. Thanks to Neil Roberts for spotting this. A make distclean is needed. * clutter/cogl/gl/Makefile.am: * clutter/cogl/gles/Makefile.am: * clutter/json/Makefile.am: * clutter/pango/Makefile.am: Revert previous commit. gl/Makefile.am | 2 +- gles/Makefile.am | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit f47f85c7f7b223f47d57ff60f3b38a64e14b0c75 Author: Emmanuele Bassi Date: Wed Apr 9 13:27:00 2008 +0000 2008-04-09 Emmanuele Bassi * clutter/cogl/Makefile.am: * clutter/cogl/gl/Makefile.am: * clutter/cogl/gles/Makefile.am: * clutter/json/Makefile.am: * clutter/pango/Makefile.am: Fix the visibility of all the symbols, for the main library and the statically linked ones. Makefile.am | 2 +- gl/Makefile.am | 2 +- gles/Makefile.am | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit 4ea9911f575a1c324f8be1f20e0aa5810ac18852 Author: Matthew Allum Date: Fri Apr 4 13:20:02 2008 +0000 2008-04-04 Matthew Allum * clutter/clutter-actor.c: Remove uneeded stage private member. Add show-on-set-parent prop and make so by default Actors are now automatically shown when reparented (#791) * clutter/eglx/clutter-backend-egl.c: * clutter/cogl/gles/cogl.c: A couple of minor comments. * clutter/eglnative/Makefile.am: Add missing clutter-egl.h header (back port from trunk) * tests/test-actors.c: Modify to take advantage of new show-on-set-parent functionality. gles/cogl.c | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-) commit f9039e53cb1d218e94b2a5a5505727e2be59020a Author: Neil Roberts Date: Tue Mar 25 15:42:50 2008 +0000 2008-03-25 Neil Roberts Added a native Win32 WGL backend. * configure.ac: Added the 'win32' flavour. * clutter/cogl/gl/cogl.c (cogl_get_proc_address): Added an ifdef to use wglGetProcAddress with the Win32 backend. * clutter/Makefile.am (DIST_SUBDIRS): Added the win32 directory. * clutter/win32/clutter-win32.pc.in: * clutter/win32/clutter-win32.h: * clutter/win32/clutter-stage-win32.h: * clutter/win32/clutter-stage-win32.c: * clutter/win32/clutter-event-win32.c: * clutter/win32/clutter-backend-win32.h: * clutter/win32/Makefile.am: * clutter/win32/clutter-backend-win32.c: New files. gl/cogl.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) commit 0264205ad144fe1928c9fec67ce022b48f2ea992 Author: Matthew Allum Date: Fri Feb 15 14:30:45 2008 +0000 2008-02-15 Matthew Allum * clutter/cogl/gles/cogl.c: (cogl_paint_init): Remove depth test getting turned on by default (unlike GL backend) gles/cogl.c | 4 ---- 1 files changed, 0 insertions(+), 4 deletions(-) commit 4e147c8843dc3a45c53b1232f7a811607de3da7b Author: Matthew Allum Date: Sun Feb 3 01:53:10 2008 +0000 2008-02-03 Matthew Allum * clutter/clutter-shader.c: Minor formatting cleanups to fit in 80 cols. * clutter/clutter-texture.c: More safety checks, clean ups in clutter_texture_new_from_actor() * clutter/cogl/gl/cogl.c: Always clear the FBO initially when rendering * tests/test-fbo.c: Overhall the test as to be more useful (and show current issues) gl/cogl.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit b97c326ecad33ea91bcf0f75626522af5d7b47a8 Author: Matthew Allum Date: Fri Feb 1 18:14:54 2008 +0000 2008-02-01 Matthew Allum * clutter/cogl/cogl.h: * clutter/cogl/gl/cogl.c: * clutter/cogl/gles/cogl.c: Disable the depth test and buffer as has some strange side effects, mainly on x/y axis rotation with multiple layers at same depth (eg rotating text on a bg has very strange effect). Seems no clean 100% effective way to fix without other odd issues.. So for now move to application to handle and add cogl_enable_depth_test() as for custom actors (i.e groups) to enable if need be. cogl.h | 3 +++ gl/cogl.c | 36 ++++++++++++++++++++++++------------ gles/cogl.c | 18 +++++++++++------- 3 files changed, 38 insertions(+), 19 deletions(-) commit 307a18860c1b9a23afb836825d7f74af1dd461fe Author: Matthew Allum Date: Fri Feb 1 15:29:00 2008 +0000 2008-02-01 Matthew Allum * clutter/clutter-feature.h: * clutter/clutter-texture.c: * clutter/clutter-texture.h: * clutter/cogl/cogl.h: * clutter/cogl/gl/cogl.c: * clutter/cogl/gles/cogl.c: * tests/Makefile.am: * tests/test.fbo.c: Add initial support for FBO's in Clutter (OpenGL only so far). See new clutter_texture_new_from_actor() Initial implementation, needs work. * clutter/x11/clutter-stage-x11.c: (clutter_stage_x11_set_cursor_visible): Fall back to again not relying on xfixes to hide cursor. *sigh* * clutter/clutter-deprecated.h: Add clutter_group_find_child_by_id cogl.h | 17 +++++++ gl/cogl.c | 153 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- gles/cogl.c | 30 ++++++++++++ 3 files changed, 199 insertions(+), 1 deletions(-) commit 4eeb4bbdd0197da538e7b0ff714339d8bb5dc1e3 Author: Øyvind Kolås Date: Fri Feb 1 12:07:23 2008 +0000 * clutter/cogl/gles/cogl.c: (cogl_rectangle_internal): increase size of GLfixed[] array to make contents fit. gles/cogl.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 801d55621ea388b65eb0dbd4b4e3e8a11d8912e0 Author: Emmanuele Bassi Date: Wed Jan 16 10:38:05 2008 +0000 2008-01-16 Emmanuele Bassi * clutter/cogl/cogl.h: Rename COGLhandleARB to COGLhandle. * clutter/cogl/gl/cogl-defines.h.in: * clutter/cogl/gl/cogl.c: Update GL implementation of COGL. * clutter/cogl/gles/cogl-defines.h: * clutter/cogl/gles/cogl.c: Update GLES implementation of COGL. * clutter/clutter-shader.c: Fix ClutterShader to use the new COGLhandle type instead of COGLhandlerARB. cogl.h | 41 ++++++++++++++++++++--------------------- gl/cogl-defines.h.in | 2 +- gl/cogl.c | 38 +++++++++++++++++++------------------- gles/cogl-defines.h | 2 +- gles/cogl.c | 36 ++++++++++++++++++------------------ 5 files changed, 59 insertions(+), 60 deletions(-) commit 7f51bdda17b533aed9ffbb90b46d47a298be4d96 Author: Emmanuele Bassi Date: Wed Jan 16 10:02:56 2008 +0000 2008-01-16 Emmanuele Bassi Define COGLhandleARB. (patch by Johan Bilien) * clutter/cogl/gles/cogl-defines.h: Define COGLhandleARB on GLES as well (using GLuint) * clutter/cogl/gles/cogl.c: Use COGLhandleARB. gles/cogl-defines.h | 1 + gles/cogl.c | 53 +++++++++++++++++++++++++++++++------------------- 2 files changed, 34 insertions(+), 20 deletions(-) commit 682eb3c6dbf23c03e35439049a84a48139520350 Author: Emmanuele Bassi Date: Mon Jan 14 11:52:04 2008 +0000 2008-01-14 Emmanuele Bassi * clutter/cogl/gl/cogl.c (cogl_get_proc_address): Implement non-GLX version using GModule and looking up the symbol from the running process. It should work when linked to library providing the requested function. (#696, Tommi Komulainen) gl/cogl.c | 20 +++++++++++++++++++- 1 files changed, 19 insertions(+), 1 deletions(-) commit 37af2da4100a353d550e9a760e0f5adbd61cf5f8 Author: Øyvind Kolås Date: Thu Jan 10 09:55:44 2008 +0000 Added COGLhandleARB since the underlying type on OSX is void*, patch from Tommi Komulainen , (#694) * clutter/cogl/gl/cogl-defines.h.in: Added COGLhandleARB typedef. * clutter/cogl/cogl.h: * clutter/cogl/gl/cogl.c: * clutter/clutter-shader.c: Use COGLhandleARB instead of COGLint when referring to program or shader handles. cogl.h | 38 +++++++++++++++++++------------------- gl/cogl-defines.h.in | 1 + gl/cogl.c | 40 ++++++++++++++++++++-------------------- 3 files changed, 40 insertions(+), 39 deletions(-) commit 471da532a31a6757e68c2c82355d964092ac6b0b Author: Emmanuele Bassi Date: Mon Dec 24 12:53:04 2007 +0000 2007-12-24 Emmanuele Bassi * clutter/cogl/cogl.h: Update cogl_clip_set() to accept the clip components as ClutterFixed values * clutter/cogl/gl/cogl.c (cogl_clip_set): Update the GL implementation of cogl_clip_set() * clutter/cogl/gles/cogl.c: (cogl_rectangle_internal): Provide an internal, inlined rectangle drawing function using fixed point values, to be shared by cogl_clip_set() and cogl_rectangle() (cogl_clip_set), (cogl_rectangle): Update the GLES implementation of cogl_clip_set() and cogl_rectangle() to use the new internal rectangle drawing function * clutter/clutter-actor.c: Make the clip an array of ClutterUnit values instead of pixel-based; this allows higher precision and device independence (_clutter_actor_apply_modelview_transform): Pass the clip components converting from units to fixed point values, using the new cogl_clip_set() signature (clutter_actor_get_property), (clutter_actor_set_clip), (clutter_actor_get_clip): Update the accessors of the clip property cogl.h | 5 ++++- gl/cogl.c | 15 +++++++++------ gles/cogl.c | 52 +++++++++++++++++++++++++++++++++------------------- 3 files changed, 46 insertions(+), 26 deletions(-) commit ef26dc078ebc1e9a5af90d931cf0e94029a8163b Author: Emmanuele Bassi Date: Fri Dec 21 16:04:39 2007 +0000 2007-12-21 Emmanuele Bassi * clutter/clutter-group.c: * clutter/clutter-group.h: Add the clutter_group_add() convenience function; it's now "undeprecated" and implemented as a macro * clutter/clutter-stage.h: Add clutter_stage_add() as a convenience macro * clutter/cogl/cogl.h: Include just the needed headers instead of the whole clutter.h; this avoids rebuild cogl when not needed cogl.h | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) commit 0e391f1194a16ae1113b4162ae3c3e791ce9aa24 Author: Tomas Frydrych Date: Wed Dec 19 16:16:10 2007 +0000 2007-12-19 Tomas Frydrych * clutter/Makefile.am: * clutter/cogl/gl/cogl-defines.h.in: * clutter/pango/pangoclutter-render.c: * configure.ac: Fixes to allow cross-compilation with mingw (patch by Neil Roberts). Removed trailing whitespace. gl/cogl-defines.h.in | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 530fca4b870610a3ac2c9503e7c847fcb9983265 Author: Matthew Allum Date: Fri Dec 14 12:36:45 2007 +0000 2007-12-14 Matthew Allum * clutter/cogl/gl/cogl-defines.h.in: * clutter/cogl/gles/cogl-defines.h: Add CLUTTER_COGL_HAS_GL/GLES defines gl/cogl-defines.h.in | 1 + gles/cogl-defines.h | 2 ++ 2 files changed, 3 insertions(+), 0 deletions(-) commit 4dea166d53af13c16af6a554578fe09cec38277d Author: Øyvind Kolås Date: Mon Dec 3 16:29:18 2007 +0000 Support for shaders in clutter. At the moment limited to drivers providing GLSL support. * clutter/cogl/cogl.h: added rather direct binding of needed for glsl shaders. * clutter/cogl/gl/cogl-defines.h.in: * clutter/cogl/gl/cogl.c: * clutter/cogl/gles/cogl-defines.h: added stubs. * clutter/cogl/gles/cogl.c: added stubs. * clutter/glx/clutter-stage-glx.c: (clutter_stage_glx_realize): unrelated memory management sanity fix. (clutter_stage_glx_unrealize): unbind all shaders on stage unrealize. * clutter/Makefile.am: added clutter-shader.[ch] * clutter/clutter-actor.[ch]: adding shader capability to actors. * clutter/clutter-feature.h: added CLUTTER_FEATURE_SHADERS_GLSL * clutter/clutter-private.h: added stack of shaders to context. * clutter/clutter-shader.[ch]: new. * tests/Makefile.am: added shader test. * tests/test-shader.c: (frame_cb), (main): simple shader test, cycle through the inline shader with right/left mouse buttons. cogl.h | 52 +++++++++++++++++++ gl/cogl-defines.h.in | 6 ++ gl/cogl.c | 137 ++++++++++++++++++++++++++++++++++++++++++++++++++ gles/cogl-defines.h | 18 +++++++ gles/cogl.c | 68 ++++++++++++++++++++++++- 5 files changed, 279 insertions(+), 2 deletions(-) commit 947f47b6a4ba5117d59e9947d6fe5f2a9eb4413d Author: Matthew Allum Date: Wed Nov 21 12:30:50 2007 +0000 2007-11-21 Matthew Allum * clutter/cogl/gles/cogl.c: (cogl_fog_set): Minor fixes for fog on GLES. gles/cogl.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 9de04774d2d4718756b6df9c376e6d1f60713ec4 Author: Emmanuele Bassi Date: Wed Nov 21 11:55:26 2007 +0000 2007-11-21 Emmanuele Bassi * clutter/cogl/cogl.h: Add cogl_fog_set() abstracting the glFog() functions and enabling the GL_FOG flag. * clutter/cogl/gl/cogl.c: Add GL implementation of cogl_fog_set(). * clutter/cogl/gles/cogl.c: Add GL/ES implementation of cogl_fog_set(). * clutter.symbols: Add new symbols. * clutter/clutter-stage.h: Add API to enable depth cueing on the stage using a linear GL fog, and to set the parameters for it (#637). * clutter/clutter-stage.c (clutter_stage_paint): Enable the GL fog if the ClutterStage:use-fog property is true. * tests/test-depth.c: Test the new stage API. cogl.h | 6 ++++++ gl/cogl.c | 56 +++++++++++++++++++++++++++++++++++++++++++++----------- gles/cogl.c | 32 ++++++++++++++++++++++++++++++-- 3 files changed, 81 insertions(+), 13 deletions(-) commit 2331fa755798548470bd189f6c3996c02625c83b Author: Matthew Allum Date: Thu Nov 15 14:45:27 2007 +0000 2007-11-15 Matthew Allum * clutter/Makefile.am: * clutter/eglx/Makefile.am: * clutter/eglx/clutter-backend-egl.c: * clutter/eglx/clutter-backend-egl.h: * clutter/eglx/clutter-eglx.h: * clutter/eglx/clutter-event-egl.c: * clutter/eglx/clutter-stage-egl.c: * clutter/eglx/clutter-stage-egl.h: * clutter/glx/Makefile.am: * clutter/glx/clutter-backend-glx.c: * clutter/glx/clutter-backend-glx.h: * clutter/glx/clutter-event-glx.c: * clutter/glx/clutter-glx.h: * clutter/glx/clutter-stage-glx.c: * clutter/glx/clutter-stage-glx.h: * clutter/x11/Makefile.am: * clutter/x11/clutter-backend-x11-private.h: * clutter/x11/clutter-backend-x11.c: * clutter/x11/clutter-backend-x11.h: * clutter/x11/clutter-event-x11.c: * clutter/x11/clutter-stage-x11.c: * clutter/x11/clutter-stage-x11.h: * clutter/x11/clutter-x11.h: Create a new X11 backend class of which EGL and GLX 'real' backends then subclass. Effectively shares all X11 code between both backends avoids code duplication and brings many missing features to EGL X backend. Requires some cleanup and testing. (#518) * clutter/cogl/gles/cogl.c: (cogl_color): Add define to use color4ub only if configure finds it. If not fall back to old code. * configure.ac: Drop support for vincent checks. Drop sdles backend. Specifically check for color4ub call. gles/cogl.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-) commit 72d39f309e49c487c38c600ec5e8fe65a385b934 Author: Robert Bradford Date: Thu Nov 8 21:23:53 2007 +0000 2007-11-08 Rob Bradford * clutter/cogl/gles/cogl.c: (cogl_color): Switch over to using glColor4ub in the GLES backend. It's available in the header file but missing in the reference manual. gles/cogl.c | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-) commit f274e9abb3d47d61c4e5a2485efcc1efd90bcb2f Author: Emmanuele Bassi Date: Mon Oct 29 16:50:34 2007 +0000 2007-10-29 Emmanuele Bassi * configure.ac: * clutter/cogl/gl/cogl-defines.h.in: The OS X backend has a funny OpenGL header location, so it basically did break every application including clutter/cogl.h because the GL header inclusion depended on symbols defined into Clutter's config.h. Now, we define the GL header into the configure template and use it to create the cogl-defines.h file cogl.h includes. gl/cogl-defines.h | 707 -------------------------------------------------- gl/cogl-defines.h.in | 703 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 703 insertions(+), 707 deletions(-) commit 4ff00fa1916ae4c6b446c5d815e09fbe53710d92 Author: Matthew Allum Date: Fri Oct 26 22:06:45 2007 +0000 2007-10-26 Matthew Allum * clutter/clutter-texture.c: * clutter/cogl/cogl.h: * clutter/cogl/gl/cogl-defines.h: * clutter/cogl/gles/cogl-defines.h: * clutter/cogl/gl/cogl.c: * clutter/cogl/gles/cogl.c: Switch from use of guint to COGLuint. Avoids problems when guint != GLuint on some platforms, i.e OSX. (Tommi Komulainen, #526) * clutter/Makefile.am: * clutter/osx/Makefile.am: * clutter/osx/clutter-backend-osx.c: * clutter/osx/clutter-backend-osx.h: * clutter/osx/clutter-event-osx.c: * clutter/osx/clutter-osx.h: * clutter/osx/clutter-stage-osx.c: * clutter/osx/clutter-stage-osx.h: * configure.ac: Add initial Cocoa/OSX Backend (by Tommi Komulainen, see #526) cogl.h | 11 ++++------- gl/cogl-defines.h | 9 +++++++++ gl/cogl.c | 35 +++++++++++++++++++++-------------- gles/cogl-defines.h | 1 + gles/cogl.c | 6 +++--- 5 files changed, 38 insertions(+), 24 deletions(-) commit bcc81bdf1b385a331873f17588d55ce0e0ae0b1e Author: Emmanuele Bassi Date: Thu Oct 25 14:43:55 2007 +0000 2007-10-25 Emmanuele Bassi * clutter/cogl/cogl.h: Do not include . cogl.h | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) commit 63ed3a309c8665c75d9e6c1103eabc2d8ca1e8a5 Author: Tomas Frydrych Date: Mon Oct 15 19:19:42 2007 +0000 2007-10-15 Tomas Frydrych * clutter/cogl/gl/cogl-defines.h: * clutter/cogl/gl/cogl.c: Fixed up GL include for windows. gl/cogl-defines.h | 5 +++++ gl/cogl.c | 5 +++++ 2 files changed, 10 insertions(+), 0 deletions(-) commit 356678ab3cfe487ab3a1071c3b04d30c23684129 Author: Tomas Frydrych Date: Fri Oct 12 08:17:00 2007 +0000 2007-10-12 Tomas Frydrych * clutter/clutter-actor.c: * clutter/clutter-backend.c: * clutter/clutter-behaviour-depth.c: * clutter/clutter-box.c: * clutter/clutter-clone-texture.c: * clutter/clutter-container.c: * clutter/clutter-entry.c: * clutter/clutter-feature.c: * clutter/clutter-fixed.c: * clutter/clutter-group.c: * clutter/clutter-hbox.c: * clutter/clutter-label.c: * clutter/clutter-layout.c: * clutter/clutter-media.c: * clutter/clutter-rectangle.c: * clutter/clutter-score.c: * clutter/clutter-script.c: * clutter/clutter-stage.c: * clutter/clutter-texture.c: * clutter/clutter-timeline.c: * clutter/clutter-timeout-pool.c: * clutter/clutter-vbox.c: * clutter/cogl/gl/cogl.c: * clutter/cogl/gles/cogl.c: * clutter/eglnative/clutter-backend-egl.c: * clutter/eglnative/clutter-event-egl.c: * clutter/eglnative/clutter-stage-egl.c: * clutter/eglx/clutter-backend-egl.c: * clutter/eglx/clutter-event-egl.c: * clutter/eglx/clutter-stage-egl.c: * clutter/glx/clutter-event-glx.c: * clutter/json/json-array.c: * clutter/json/json-generator.c: * clutter/json/json-node.c: * clutter/json/json-object.c: * clutter/json/json-parser.c: * clutter/sdl/clutter-backend-sdl.c: * clutter/sdl/clutter-event-sdl.c: * clutter/sdl/clutter-stage-sdl.c: Fixedup config.h inclusion (must always be bracketed with #ifdef HAVE_CONFIG_H). gl/cogl.c | 67 ++++++++++++++++++++++++++++++---------------------------- gles/cogl.c | 3 ++ 2 files changed, 38 insertions(+), 32 deletions(-) commit 14a794f18b8709b9069484966756a445968350df Author: Matthew Allum Date: Fri Aug 24 15:12:52 2007 +0000 2007-08-24 Matthew Allum * clutter/clutter-actor.c: * clutter/clutter-event.h: * clutter/clutter-main.c: * clutter/clutter-stage.c: * clutter/clutter-stage.h: * clutter/glx/clutter-backend-glx.c: * clutter/glx/clutter-backend-glx.h: * clutter/glx/clutter-event-glx.c: * clutter/glx/clutter-stage-glx.c: * clutter/glx/clutter-stage-glx.h: Add initial support for stage state events. Fix fullscreening for an already mapped stage. * tests/test-events.c: Print out info from the above. Blue button now toggles fullscreen. * clutter/clutter-effect.c: * clutter/clutter-effect.h: Add a setting for templates to ref or clone underlying timelines. (As to improve sync issues like those in foofone) * tests/test-timeline.c: Also add completed signals. * clutter/cogl/gles/cogl.c: (cogl_texture_image_2d): * configure.ac: Forward port from stable branch. RGB Image fixes gles and check for lower case libgles_cm. gles/cogl.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-) commit fe4fb91fa335e2be999fc2c86ce65af51dc9f82a Author: Matthew Allum Date: Mon Aug 13 20:48:01 2007 +0000 2007-08-13 Matthew Allum * clutter/clutter-actor.c: * clutter/clutter-actor.h: * clutter/clutter-event.c: * clutter/clutter-event.h: * clutter/clutter-main.c: * clutter/clutter-main.h: * clutter/clutter-private.h: * clutter/clutter-stage.c: * clutter/clutter-stage.h: * clutter/clutter-types.h: Initial implementation of actors emmitting event signals (423); - Actors set_reactive() to receive mouse events. (call clutter_enable_motion_events() for per action motion events) - clutter_stage_set_key_focus () to direct key events. - Events bubble up to parents (ending at stage) (original source identified by clutter_event_get_source()) TODO: - enter/leave notifys for actors. - stage specific events - fullscreen - grabs * tests/test-events.c: Extend a little to use new API * clutter/cogl/gl/cogl.c: * clutter/glx/clutter-backend-glx.c: Move get_proc_address into cogl and out of backend. (shaders will need it) * clutter/clutter-group.c: (clutter_group_real_lower): Fix a minor compile warning. * TODO: Sync up. gl/cogl.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 44 insertions(+), 1 deletions(-) commit a7525798454bed1bf8a0cda4056d4429011c0f7f Author: Matthew Allum Date: Tue Aug 7 11:35:22 2007 +0000 2007-08-07 Matthew Allum * clutter/clutter-fixed.c: * clutter/clutter-fixed.h: Add documentation. * clutter/cogl/gl/cogl.c: (cogl_perspective): Remove CFX_* shortened macros gl/cogl.c | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-) commit bb3e6a91bbd65cfc397894a215d2edc02344fcab Author: Matthew Allum Date: Tue Jul 24 16:50:34 2007 +0000 2007-07-24 Matthew Allum * clutter/cogl/gl/cogl-defines.h: Add CGL_UNSIGNED_INT_8_8_8_8_REV (for big endian machines) gl/cogl-defines.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 06d28d04d1fc3bf7e0509b5f975ff72faef628a8 Author: Matthew Allum Date: Tue Jul 24 16:42:50 2007 +0000 2007-07-24 Matthew Allum * clutter/cogl/gl/cogl-defines.h: Another GL_TEXTURE_RECTANGLE_ARB related fix (#404) gl/cogl-defines.h | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit bbd0c14ef2d2fca96f8451d30065353345aa0259 Author: Matthew Allum Date: Tue Jul 24 12:17:42 2007 +0000 2007-07-24 Matthew Allum * clutter/cogl/gles/cogl.c: (cogl_get_bitmasks): Fix typo calling glGetIntegerv rather than glGetInteger gles/cogl.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit f5f0fe94fd3224b772650d792d51733930d8d89c Author: Matthew Allum Date: Tue Jul 24 12:06:52 2007 +0000 2007-07-24 Matthew Allum * clutter/cogl/gl/cogl.c: (cogl_get_features): learn to use cpp properly. gl/cogl.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 1001838b33549cd59f50278b7044efdbd74613ed Author: Matthew Allum Date: Tue Jul 24 12:04:24 2007 +0000 2007-07-24 Matthew Allum * clutter/clutter-media.c: (clutter_media_base_init): Remove #if 0! signal - assume causing issues with binding generation. (#407) * clutter/cogl/gl/cogl.c: Check GL_TEXTURE_RECTANGLE_ARB and GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB are defined in gl.h (#404) gl/cogl.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) commit e0487843f3945e6b43e66ae0e39bff984f6bde11 Author: Matthew Allum Date: Thu Jul 12 10:15:19 2007 +0000 2007-07-12 Matthew Allum * clutter/clutter-actor.c: (clutter_actor_paint): * clutter/clutter-stage.c: (clutter_stage_get_actor_at_pos): * clutter/cogl/cogl.h: * clutter/cogl/gl/cogl.c: (cogl_get_viewport): * clutter/cogl/gles/cogl.c: (cogl_get_viewport): Based on patch from Pan Bohui, See; http://bugzilla.openedhand.com/show_bug.cgi?id=390 * TODO: More misc updates. cogl.h | 3 +++ gl/cogl.c | 13 +++++++++++++ gles/cogl.c | 13 +++++++++++++ 3 files changed, 29 insertions(+), 0 deletions(-) commit 8c5ac95a696aa6f7fbfa9756f3fc597bbb1333b8 Author: Matthew Allum Date: Fri Jun 29 11:54:31 2007 +0000 2007-06-29 Matthew Allum * clutter/clutter-texture.c: (texture_upload_data): Fix a SEGV for GL ES textures. * clutter/cogl/gles/cogl.c: (cogl_setup_viewport): Tweak default z_camera for 60 degrees like GL. * clutter/egl/clutter-backend-egl.c:: * clutter/egl/clutter-stage-egl.c: Fix edpy usage (thanks to Kaj Gronholm). gles/cogl.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit d7eda69b480e11db94a8d9619791f4c59e36652a Author: Matthew Allum Date: Thu Jun 28 09:38:42 2007 +0000 2007-06-28 Matthew Allum * clutter/cogl/gl/cogl.c: (cogl_setup_viewport): Improve fixed z_camera value for defualt perspective. Appears pixel perfect on ATI and Intel at least gl/cogl.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-) commit 3cdc195408626066c033868a68a3f50a3d9c6e95 Author: Tomas Frydrych Date: Tue Jun 26 16:07:14 2007 +0000 tweaked z_camera constant for default 60 deg perspective angle gl/cogl.c | 30 +++++++++++++++++++++++++----- gles/cogl.c | 21 ++++++++++++++++----- 2 files changed, 41 insertions(+), 10 deletions(-) commit 2ef9e63f9c64086a1b9434ff17c8d4e359f1983e Author: Tomas Frydrych Date: Mon Jun 25 13:43:13 2007 +0000 changed ClutterPerspective.fovy from ClutterAngle to degrees cogl.h | 4 ++-- gl/cogl.c | 15 +++++++++------ gles/cogl.c | 16 ++++++++++------ 3 files changed, 21 insertions(+), 14 deletions(-) commit c451d0501b594db7de2447f8c5fbc4afb303c3d4 Author: Matthew Allum Date: Tue Jun 19 09:10:37 2007 +0000 2007-06-19 Matthew Allum * clutter/clutter-stage.c: * clutter/clutter-stage.h: * clutter/glx/clutter-stage-glx.c: * clutter/sdl/clutter-stage-sdl.c: Add window title setting/getting functionality. * clutter/clutter-event.c: (clutter_key_event_unicode): Remove uneeded convert case call. * clutter/cogl/gl/cogl.c: (cogl_rectangle) Use parameters correctly for underlying GL rect call. * tests/test-entry.c: Add a window title. gl/cogl.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 3a6ea6dc16a554871d45ee323650e181a44bc782 Author: Matthew Allum Date: Thu Jun 14 12:54:47 2007 +0000 2007-06-14 Matthew Allum * clutter/cogl/gl/cogl.c: (cogl_check_extension): Actually populate this func and remove the static alternate named one. Means GLX actually checks for available extensions. Other minor tidy ups. * clutter/glx/clutter-backend-glx.c: * clutter/glx/clutter-backend-glx.h: Add support for GLX_SGI_swap_control to do vblanking prefering over glXGetVideoSyncSGI. Should fix issues on Intel chips with very slow frame rates due to vblank problems. Thanks to Michel Danzer for tips, see; http://bugs.freedesktop.org/show_bug.cgi?id=10542 * test/test-actors.c: Change FPS to 60. gl/cogl.c | 68 ++++++++++-------------------------------------------------- 1 files changed, 12 insertions(+), 56 deletions(-) commit 1a6069bdee0229fd64fb92e7043b690d2829e64a Author: Tomas Frydrych Date: Tue Jun 12 11:42:29 2007 +0000 clutter_actor_project_point/vertices cogl.h | 9 +++++++ gl/cogl.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- gles/cogl.c | 18 ++++++++++++++ 3 files changed, 99 insertions(+), 2 deletions(-) commit f72e754876ec53ff27b70622263d1e809d89b06a Author: Matthew Allum Date: Thu Jun 7 23:51:53 2007 +0000 2007-06-08 Matthew Allum * clutter/clutter-actor.c: * clutter/clutter-debug.h: * clutter/clutter-main.c: * clutter/clutter-main.h: * clutter/clutter-private.h: * clutter/clutter-timeline.c: Add 'schedule' debug flag and new CLUTTER_TIMESTAMP macro. * clutter/clutter-texture.c: * clutter/clutter-texture.h: * clutter/cogl/cogl.h: * clutter/cogl/gl/cogl-defines.h: * clutter/cogl/gles/cogl-defines.h: * clutter/cogl/gl/cogl.c: * clutter/cogl/gles/cogl.c: Add initial experiemental YUV texture support. Move texture rect size checks into cogl. Better handle moving texture data from video -> system memory (if support available). cogl.h | 4 +++- gl/cogl-defines.h | 9 +++++++++ gl/cogl.c | 28 ++++++++++++++++++++-------- gles/cogl-defines.h | 8 +++++++- gles/cogl.c | 20 +++----------------- 5 files changed, 42 insertions(+), 27 deletions(-) commit 682aba56e3e802096daf078740d93e56596cb0eb Author: Tomas Frydrych Date: Tue May 29 07:26:32 2007 +0000 fix z_camera calcualtion in gles/cogl gles/cogl.c | 11 ++--------- 1 files changed, 2 insertions(+), 9 deletions(-) commit 7c7fcc2cb9a864265b439ec42d77aa1927e0b722 Author: Matthew Allum Date: Mon May 28 18:49:34 2007 +0000 2007-05-28 Matthew Allum * clutter/clutter-backend.c: * clutter/clutter-backend.h: * clutter/glx/clutter-stage-glx.c: * clutter/glx/clutter-backend-glx.c: Fix up rendering pipeline removing clutter_backend_XXX_stage_paint and adding clutter_backend_XXX_redraw instead. Duplicates less code in backends, avoids clutter_actor_paint() getting called before stage is set up (viewport wise) and unbreaks things like picking. * clutter/clutter-actor.c: * clutter/clutter-actor.h: * clutter/clutter-main.c: * clutter/clutter-private.h: * clutter/clutter-stage.c: (clutter_stage_get_actor_at_pos): Redo picking functionality a different way (via color indexing) as to provide more flexibility, possibly speed and more likely work with GL/ES (doesn't currently however - not sure why). * clutter/clutter-group.c: Add groups own 'pick' method. * clutter/cogl/cogl.h: * clutter/cogl/gl/cogl.c: * clutter/cogl/gles/cogl.c: Move clipping funtionality into cogl. * clutter/cogl/gles/cogl-defines.h: Hack around missing BGR format in GL/ES. * clutter/egl/clutter-backend-egl.c: * clutter/egl/clutter-backend-egl.h: * clutter/egl/clutter-stage-egl.c: * clutter/sdl/clutter-backend-sdl.c: * clutter/sdl/clutter-backend-sdl.h: * clutter/sdl/clutter-event-sdl.c: * clutter/sdl/clutter-stage-sdl.c: Update backends to newer API. Add basic mouse event translation to SDL. cogl.h | 10 ++++- gl/cogl.c | 104 +++++++++++++++----------------------------------- gles/cogl-defines.h | 7 +++ gles/cogl.c | 49 +++++++++++++++++++---- 4 files changed, 86 insertions(+), 84 deletions(-) commit 4df06650121279784c5de68d9296794e4e238bd6 Author: Tomas Frydrych Date: Fri May 25 12:07:24 2007 +0000 ClutterBehaviourEllipse api changes; z_camera calculation gl/cogl.c | 6 +++++- gles/cogl.c | 10 +++++----- 2 files changed, 10 insertions(+), 6 deletions(-) commit 84257c98208ba55f6bc813013f59b83149a23876 Author: Matthew Allum Date: Fri May 25 10:56:09 2007 +0000 2007-05-25 Matthew Allum * Makefile.am: Install a default flavour .pc file. * clutter/clutter-actor.c: Translate units correctly for translate() * clutter/clutter-feature.h: Add new texture features. * clutter/clutter-fixed.h: Add clutter angle conversion defines. * clutter/clutter-group.c: Use cogl not GL. Dont recurse on show all. * clutter/clutter-private.h: Remove sync_viewport. * clutter/clutter-rectangle.c: Fix cogl typo. * clutter/clutter-stage.c: * clutter/clutter-stage.h: Add perspective settings. Remove viewport_sync. Add audience stubs. Fix up actor_at_pos a little (still broken) * clutter/clutter-texture.h: * clutter/clutter-texture.c: Redo pixel uploading. Add initial (disabled) YUV support. * clutter/clutter-timeline.c: Fire 'completed' signal when looping. * clutter/cogl/gl/cogl.c: Move some backend checks here. * clutter/glx/clutter-backend-glx.c: Actually check target display has GLX ext. * clutter/glx/clutter-stage-glx.c: Handle offscreen failing more gracefully. * examples/Makefile.am: Use AM_LDFLAGS. * clutter/clutter-main.c: * clutter/clutter-feature.c: * clutter/clutter-backend.c: * clutter/clutter-alpha.c: Fix a compile warnings. * tests/Makefile.am: * tests/test-offscreen.c: * tests/test-scale.c: More tests. gl/cogl.c | 36 +++++++++++++++++++++++++++--------- 1 files changed, 27 insertions(+), 9 deletions(-) commit 4c01df36e6e7ef71c3bb8b5f4f156155f83ace3f Author: Matthew Allum Date: Wed May 16 09:08:30 2007 +0000 2007-05-16 Matthew Allum * clutter/clutter-backend.c: * clutter/clutter-backend.h: * clutter/clutter-feature.c: * clutter/clutter-feature.h: * clutter/clutter-main.c: * clutter/clutter-main.h: * clutter/clutter-private.h: * clutter/clutter-stage.c: * clutter/cogl/cogl.h: * clutter/cogl/gl/cogl.c: * clutter/cogl/gles/cogl.c: * clutter/glx/clutter-backend-glx.c: * clutter/glx/clutter-backend-glx.h: * clutter/glx/clutter-glx.h: * clutter/glx/clutter-stage-glx.c: * clutter/glx/clutter-stage-glx.h: Rejig the features() foo, moving mostly into backends/cogl. cogl.h | 2 + gl/cogl.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- gles/cogl.c | 6 +++++ 3 files changed, 75 insertions(+), 1 deletions(-) commit 9d709e3e678613ab49f687eb992c80ec6fee2db3 Author: Matthew Allum Date: Wed May 2 09:01:11 2007 +0000 2007-05-02 Matthew Allum * clutter/clutter-actor.c: * clutter/cogl/gles/cogl.c: Fix rotation + other fixed point cleanups. * clutter/clutter-texture.h: Sketch out an updated API. gles/cogl.c | 102 ++++------------------------------------------------------ 1 files changed, 7 insertions(+), 95 deletions(-) commit d18e432b2284cdc87236153f703631b317f91e92 Author: Tomas Frydrych Date: Tue May 1 20:13:15 2007 +0000 fixed sign problem in cogl_setup_vieport gles/cogl.c | 22 ++++++++++++++++++++-- 1 files changed, 20 insertions(+), 2 deletions(-) commit 7d5101ad616e1e6a956c9c3c590dc62614c0eb7a Author: Matthew Allum Date: Tue May 1 15:26:12 2007 +0000 2007-05-01 Matthew Allum * clutter/clutter-rectangle.c: Comment out color match check for now as appears to be causing borders to always get pained. * clutter/clutter-texture.h: Add some format defines (unused as yet) * clutter/cogl/gles/cogl.c: * clutter/egl/clutter-stage-egl.c: * configure.ac: Various OpenGL ES backend related fixes and tweaks. gles/cogl.c | 162 +++++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 124 insertions(+), 38 deletions(-) commit 35b6b769d51af849133b6b2acedb1f47381a0a2c Author: Matthew Allum Date: Sat Apr 28 00:37:11 2007 +0000 2007-04-28 Matthew Allum * clutter/Makefile.am: * clutter/clutter-debug.h: * clutter/clutter-fixed.h: * clutter/clutter-main.c: * clutter/cogl/gles/Makefile.am: * clutter/cogl/gles/cogl-defines.h: * clutter/cogl/gles/cogl.c: * clutter/egl/clutter-backend-egl.c: * clutter/egl/clutter-backend-egl.h: * clutter/egl/clutter-stage-egl.c: * configure.ac: Populate most stubs for cogl GL/ES implementation. (against vincent - see http://svn.o-hand.com/repos/misc/ogles) Add various fixups to EGL backend. Code builds and runs (on 16bpp) but yet displays much (is close!) * clutter/pango/pangoclutter-render.c: comment out some rouge glBegin/end calls. gles/Makefile.am | 5 +- gles/cogl-defines.h | 11 ++ gles/cogl.c | 356 ++++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 368 insertions(+), 4 deletions(-) commit 90d634feeb61e9ce5c8e0e556d2a2ca22e44bbcf Author: Matthew Allum Date: Fri Apr 27 21:13:06 2007 +0000 2007-04-27 Matthew Allum * clutter/Makefile.am: * clutter/clutter-actor.c: * clutter/clutter-clone-texture.c: * clutter/clutter-rectangle.c: * clutter/clutter-stage.c: * clutter/clutter-texture.c: * clutter/cogl/cogl.h: * clutter/cogl/gl/Makefile.am: * clutter/cogl/gl/cogl-defines.h: * clutter/cogl/gl/cogl.c: * clutter/cogl/gles/Makefile.am: * clutter/cogl/gles/cogl-defines.h: * clutter/cogl/gles/cogl.c: * clutter/glx/Makefile.am: * clutter/glx/clutter-stage-glx.c: * clutter/pango/Makefile.am: * clutter/pango/pangoclutter-render.c: * configure.ac: Add initial 'cogl' implementation. 'cogl' is a simple abstration layer over GL and GL/ES used by clutter internally. It should eventually allow clutter applications to be run on both GL and GL/ES with just a recompile as well as provide more debugging and potentially profiling information for GL and GL/ES usage. This commit contains the initial GL implementation. cogl.h | 137 +++++++++-- gl/Makefile.am | 8 +- gl/cogl-defines.h | 677 +++++++++++++++++++++++++++++++++++++++++++++++++++ gl/cogl.c | 437 ++++++++++++++++++++++++++++++++- gles/Makefile.am | 3 +- gles/cogl-defines.h | 440 +++++++++++++++++++++++++++++++++ gles/cogl.c | 68 +++++- 7 files changed, 1727 insertions(+), 43 deletions(-) commit 40cd5aac016f253d6e289473d51faf175d9965a6 Author: Matthew Allum Date: Tue Mar 27 21:09:11 2007 +0000 2007-03-27 Matthew Allum * clutter/cogl/Makefile.am: * clutter/cogl/cogl.h: * clutter/cogl/gles/Makefile.am: * clutter/cogl/gles/cogl.c: Begin poplulating cogl GLES code. * configure.ac: * clutter/egl/clutter-event-egl.c: * clutter/egl/clutter-stage-egl.c: * clutter/egl/clutter-stage-egl.h: * clutter/egl/clutter-backend-egl.c: * clutter/egl/clutter-backend-egl.h: * clutter/egl/clutter-egl.h: Add initial EGL/X backend work mostly ported from backend branch. Builds but untested as yet. * clutter/glx/clutter-stage-glx.c: Only include XFixes Header if we have have it. * clutter/clutter-behaviour.c: (clutter_behaviour_apply): * clutter/clutter-behaviour.h: Add clutter_behaviour_is_applied() Makefile.am | 6 ++- cogl.h | 28 +++++++++++++++ gles/Makefile.am | 17 +++++++++ gles/cogl.c | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 152 insertions(+), 2 deletions(-) commit 6898d9e6b3c18c7b810312d2a15b25d85971dd6f Author: Emmanuele Bassi Date: Tue Mar 27 09:38:35 2007 +0000 Add header and compiler guards. cogl.h | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) commit f7a7f5b32a0e907ed1730ad0b0fa0a5bf602f7ac Author: Matthew Allum Date: Mon Mar 26 23:18:39 2007 +0000 2007-03-27 Matthew Allum * clutter/clutter-feature.c: Rejig ifdef's a little. Make drm vblanking Linux only. * clutter/clutter-stage.c: * clutter/clutter-stage.h: Add a perspective boxed type. * clutter/glx/clutter-stage-glx.c: Add some FIXMEs * clutter/Makefile.am: * clutter/cogl/Makefile.am: * clutter/cogl/cogl.h: * clutter/cogl/gl/Makefile.am: * clutter/cogl/gl/cogl.c: * configure.ac: Very initial work on 'cogl' GL/GLES abstraction/utility code. Makefile.am | 3 ++ cogl.h | 59 ++++++++++++++++++++++++++++++++ gl/Makefile.am | 17 +++++++++ gl/cogl.c | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 181 insertions(+), 0 deletions(-) commit 5a28ea6e78c07eaa695a2e46d0763382c352f81e Author: Matthew Allum Date: Tue Mar 22 14:53:51 2005 +0000 Initial Import