Cogl 1.10.0 2012-03-20 • List of changes since Cogl 1.9.8 » Add cogl_framebuffer_draw_[*_]rectangle functions. These can be used as a replacement for cogl_rectangle in the 2.0 API to avoid the global framebuffer stack. » Fixed flushing the point size with the GL driver when using GLSL. » Added the missing cogl_is_onscreen and cogl_is_framebuffer functions. » Added cogl_quaternion_init_from_quaternion and cogl_quaternion_init_from_matrix to the public headers. » Make cogl_has_feature available when only COGL_ENABLE_EXPERIMENTAL_API is defined. » Add cogl_framebuffer_read_pixels. This is a convenience wrapper around cogl_framebuffer_read_pixels_into_bitmap to read directly into an application's buffer. » Added a public cogl_bitmap_new_for_data function. This can be used for example to call cogl_framebuffer_read_pixels_into_bitmap to read directly into an application's buffer with an unusual rowstride. » Visual Studio build fixes » Translation updates • List of bugs fixed since Cogl 1.9.8 https://bugzilla.gnome.org: #669122 - Clipped redraws and tearing #671984 - cogl glyph cache uses uninitialised variable. #671985 - cogl matrix stack has a use after realloc #672038 - Move the fallback define for GL_PACK_INVERT_MESA #672174 - cogl_path_curve_to second parameter ignored #672243 - Drive by leak fix when code spelunking Many thanks to: Chun-wei Fan Robert Bragg Dave Airlie Matej Urbančič Adam Matoušek Adel Gadllah Alexander Shopov Bruce Cowan Daniel Nylander Dénes Almási Duarte Loreto Enrico Nicoletto Fran Diéguez Khoem Sokhem Nilamdyuti Goswami Piotr Drąg Ray Strode Ryan Lortie Yuri Myasoedov 甘霖 Cogl 1.9.8 2012-03-05 • List of changes since Cogl 1.9.6 » Various Visual Studio build fixes » Correctly check for GL_EXT_packed_depth_stencil and support using GL_OES_packed_depth_stencil on GLES2 » Correctly handle pre-multiplied alpha conversions when reading back texture data. » Added cogl_renderer_{get,set}_driver functions so the underlying driver can be chosen programmatically. » Revamped the conformance testing framework so that it automatically runs every test against GLES2 as well as GL and also against all of the pipeline backends and with npot textures disabled. » Add a conformance test for reading back an RGBA texture as alpha-only » Added support for converting between all of Cogl's supported pixel formats including pre-multiplied alpha conversions. » Added conformance tests for converting to and from all of the supported formats. » Added a public cogl_framebuffer_read_pixels_into_bitmap() function which will effective read into a CoglPixelBuffer. » CoglPixelBuffer was changed to no longer have associated width, height and format information and instead we will rely on CoglBitmap to track that informations. The relationship is analogous how CoglAttributes relate to CoglAttributeBuffers and means for example that a CoglPixelBuffer could now be used to hold multiple images. » Added public cogl_bitmap_get_{width,height,format,rowstride} api » Added a public accessor for the underlying pixel buffer of a CoglBitmap. » Added various missing cast macros for some buffer objects. » Ported the Clutter based test-pixel-buffer test to be standalone. • List of bugs fixed since Cogl 1.9.6 https://bugzilla.gnome.org: #666184 - framebuffer: Enable a single depth and stencil buffer for GLES #670793 - Don't use cogl_get_draw_framebuffer when flushing pipeline state #671016 - INVALID_ENUM errors in gnome-shell Many thanks to: Neil Roberts Chun-wei Fan Daniel Korostil Martin Srebotnjak Matej Urbančič Matic Gradišer Мирослав Николић Cogl 1.9.6 2012-02-21 • List of changes since Cogl 1.9.4 » New conformance tests or tests ported from Clutter: test-offscreen test-primitive test-texture-3d » New public experimental functions: cogl_pipeline_get_layer_texture cogl_primitive_copy cogl_primitive_foreach_attribute cogl_primitive_get_indices cogl_pipeline_get_layer_{min,max}_filter » Added cogl_kms_renderer_get_kms_fd to get the KMS file descriptor. » Bug fixed in the KMS support where it would crash on cleanup if it couldn't save the CRTC state. » Bug fixed in the Wayland compositor support where it would leak EGLImages when creating a texture from a buffer » The swap_buffer callback in GLX is now delayed until cogl_poll_dispatch is called so that apps can handle it more predictably. » Fixes for bugs with pipelines that are trying to use a layer with a NULL texture. » New cogl_framebuffer_* API for drawing directly to the framebuffer without having to push the framebuffer. Ideally we want to move towards this style of API in future with no global stacks. » Most of the _EXP suffixes have been removed from the experimental API symbols in the hope that the gtk-doc unstable annotation will be enough to distinguish these. » Add a COGL_DEBUG=winsys option » CoglBuffer and CoglPrimitive now take an explicit CoglContext argument in their constructor. We want to move towards getting rid of the global context. » Updates to the MSVC build support. » Add cogl_pipeline_set_layer_null_texture(). This can be used for base pipelines instead of having to create a dummy texture. » Fix some bugs where Cogl was assuming there is a direct mapping between the pipeline layer number and the GL texture unit number. » In snippets, there are now always builtin sampler uniforms for every layer of the pipeline. This makes it easier to write GLSL that samples arbitrary units. » The texture lookup snippet hook now gets passed the sampler for the unit. The snippet can use this to sample the texture multiple times. » Some public constants for CoglPixelFormat have been removed (COGL_UNPREMULT_MASK, COGL_UNORDERED_MASK and COGL_PIXEL_FORMAT_{24,32}). » 30-bit pixel formats added. » COGL_DEBUG=wireframes now correctly renders primitives using vertex shader snippets. » cogl_framebuffer_swap_buffers and friends have been renamed to cogl_onscreen_swap_buffers. » If the experimental 2.0 API is requested, as far as possible the headers for the 1.0 API are no longer included. Define COGL_ENABLE_EXPERIMENTAL_API instead if you want to mix both APIs. • List of bugs fixed since Cogl 1.9.4 https://bugzilla.gnome.org: #660188 - Color corruption with software rendering at 30-bit color depth #668385 - Missing G_END_DECLS in cogl-poll.h #668856 - Do not look for GLES2-only GLSL prototypes on GL #668913 - The journal for an offscreen doesn't get flushed when cogl_texture_get_data is called #669368 - Reading back texture fails with ‘Invalid operation’ + wrong image #669785 - Build fixes for COGL master (1.9.x) • Note the following conformance tests are currently failing with the GLES2 driver but they were also failing in 1.9.4: test_cogl_depth_test, test_cogl_sub_texture, test_cogl_texture_3d Many thanks to: Robert Bragg Chun-wei Fan Damien Leone Emmanuele Bassi Jasper St. Pierre Chao-Hsiung Liao Gheyret Kenji Ihar Hrachyshka Kasia Bondarava Kenneth Nielsen Kjartan Maraas Ryan Lortie Cogl 1.9.4 2012-01-16 • List of changes since Cogl 1.9.2 » Visual Studio 2008/2010 project files have landed and are being actively maintained by Chun-wei Fan » A basic KMS (Kernel Mode Setting) backend was added so we can run fullscreen Cogl applications without X11 on Linux. » EGL platforms can now be selected at runtime. Although we've had the ability select backends at runtime for a while, up until now all EGL platforms were part of one monolithic backend and were mutually exclusive so a platform had to be chosen at build time. » cogl_matrix_orthographic() was added as a replacement for cogl_matrix_ortho() since the OpenGL style of arguments for cogl_matrix_ortho() wasn't consistent with the rest of the Cogl API. » Experimental cogl_framebuffer_ apis were added for manipulating the per-framebuffer modelview matrix stack. The aim is for these to replace apis like cogl_rotate/translate/scale because those apis aren't explicitly related to a CoglContext which we'd like to avoid so we can remove the need for a global CoglContext. » Experimental cogl_framebuffer apis were added for manipulating the per-framebuffer clip stacks. » The internal _cogl_framebuffer_flush_state() function was optimized to do a better job of bailing out when no framebuffer state has changed, and when state has changed the cost should now scale by the number of changes made instead of scaling by the total range of framebuffer state that Cogl tracks. » Internally we finally removed _cogl_enable() which won't mean much to most people but makes the maintainers happy. This happened as part of a rework for how attribute state is flushed when drawing which fixed some problems with supporting custom attributes and should improve the performance of flushing attributes too. » We added an experimental CoglSnippets api aiming to greatly simplify how developers can incorporate snippets of GLSL code into the pipeline. This is a feature that has been on the drawing board for a long time so we're really happy that it's finally here. *** We'd really love to see people start to play with the snippets API and tell us how they get on. The plan is for this API to replace all need for developers to use the CoglProgram and CoglShader apis which are rather poor copies of the OpenGL APIs for using GLSL which don't map well to Cogl's design. *** » We've updated Cogl's client side Wayland support » We've updated Cogl's compositor side Wayland support, including updating the example cogland compositor. » We added an SDL window system backend for Cogl, which provides a simple, portable way to play with Cogl as a standalone graphics API with basic support for input events available from SDL. See examples/cogl-sdl-hello to see how that works. » We added mainloop integration support to Cogl. Since we want to have the ability to use poll() to block for events from some drivers we have introduced apis that all Cogl applications are required to use to integrate Cogl into their mainloop. For applications using a glib mainloop we've provided a GSource for convenience. • List of bugs fixed since Cogl 1.9.2 https://bugzilla.gnome.org: #650020 - Visual C++ 2008/2010 Project files to compile Cogl and Cogl-Pango #665190 - The conformance test wrapper scripts don't return an exit code #665604 - Cogl needs to bind the framebuffer before calling eglSwapBuffers #665722 - Build Fixes for COGL master branch #665723 - Conformance tests failed (snippets, pipeline_uniforms) #667009 - Remove DRM vblank hack Many thanks to: Neil Roberts Chun-wei Fan Rob Bradford Daniel Mustieles Fran Diéguez Aurimas Černius Javier Jardón Jorge González Joshua Lock Seong-ho, Cho Tomeu Vizoso Yinghua Wang Cogl 1.9.2 2011-11-23 • List of changes since Cogl 1.8.0 » Fix a crash while generating ARBfp code with layers containing a NULL texture. » Improvements to the mingw-fetch-dependencies script to work without first needing to find a copy of config.guess. » Translation updates. » Ported more conformance tests from Clutter to be standalone Cogl tests. » Adds experimental support for EXT_discard_framebuffer extension which is important for good performance on PowerVR graphics hardware » Adds experimental API to enable clipping to the silhouette of an arbitrary 2D CoglPrimitive » Make the CoglTexture2DSliced API directly available as experimental API » Adds a new feature checking API that's not limited to just 32 features and also must be passed a CoglContext pointer so it's clear at what point the features can start to be queried. » Adds an experimental CoglMetaTexture interface that gives one simple api for mapping meta-textures that aren't directly understood by the GPU (such as sliced textures, atlas textures, sub textures) into low level textures. This interface also gives us a single place to handle repeat mode fallbacks, supporting clamp-to-edge, repeat and mirrored repeat. » Make the CoglTextureRectangle API directly available as experimental API » Adds experimental support for multisampling, which is where the gpu calculates multiple samples per pixel and the final pixel is a weighted average of those samples. For example you can expect that multisampling with 4 samples per pixel would give similar quality to rendering at double the resolution and then scaling that image down with texture filtering, but the GPU can often do some tricks such that multisampling is faster than doing that manually (known as supersampling) » Make the CoglSubTexture API directly available as experimental API » Added an n_indices argument to cogl_primitive_set_indices to avoid needing to always call cogl_primitive_set_n_vertices() after using the api and to make it less error prone to use the api. » Ship a standalone cogl-xlib.h that must be included manually for any xlib specific api because the Xlib headers so many numerous badly namespaced symbols that it's not desireable to include them unless absolutely required. » Updated the Wayland support to work with the latest upstream interfaces. » Add experimental CoglPipeline API for controlling the backface culling. » Added a cogl_matrix_transpose() function » Add experimental support for setting uniforms on a CoglPipeline. This is in preparation for being able to associate snippets of GLSL that hook into specific parts of the pipeline. We plan to eventually deprecate CoglProgram but even in the meantime we would also recommend setting uniforms on the pipeline now instead of the program. » Adds experimental cogl_framebuffer_finish() api for explicitly synchonizing the GPU with the CPU. • List of bugs fixed since Cogl 1.8.0 https://bugzilla.gnome.org: #656755 - Install the examples #658700 - Bind the locale domain so that gettext actually works #660184 - Running an X client causes a segfault when using software rendering #660387 - test-color-mask fails due to uninitialized texture data #660617 - Porting of clutter tests #660986 - memory leak in CoglPipeline::layers_cache #661019 - Indices don't seem to work #661174 - Remove inclusion of Xlib headers from Cogl headers #662184 - Pipeline shaders often fail to link on GLES2 because of different n_tex_coord_attribs #662542 - The ARBfp and GLSL pipeline backends sometimes don't flush uniforms #663578 - _COGL_RETURN_IF_FAIL sometimes doesn't use glib #663628 - Make the pipeline backface culling experimental public Many thanks too: Robert Bragg Neil Roberts Luca Bruno Chun-wei Fan Jorge González Rob Bradford Fran Diéguez Rico Tzschichholz Yaron Shahrabani krishnababu k Damien Leone Daniel Martinez Cucalon Daniel Mustieles Flemming Christensen Gabor Kelemen Gil Forcada Ivaylo Valkov Jasper St. Pierre Kjartan Maraas Matej Urbančič Muhammet Kara Nguyễn Thái Ngọc Duy Nilamdyuti Goswami Seong-ho, Cho Simos Xenitellis Zan Dobersek Cogl 1.8.0 2011-09-19 • List of changes since Cogl 1.7.8 » Started porting Cogl conformance tests from Clutter to be standalone Cogl tests including tests for depth-state and backface culling. » Added a new color mask conformance test » We no longer implicitly define COGL_ENABLE_EXPERIMENTAL_2_0_API in the cogl-2.0-experimental.pc file cflags because the way pkgconfig works makes it hard to then consume libraries depending on cogl-2.0-experimental.pc with Clutter. » Made progress re-factoring cogl-pipeline.c to be more maintainable by starting to split the code up into more manageable pieces. » We now bind the locale dir for the Cogl domain during init » We now track backface culling state as part of CoglPipeline. • List of bugs fixed since Cogl 1.7.8 https://bugzilla.gnome.org: #656442 - README points to wrong bug product #658092 - St ::hover transitions don't act as expected #658333 - Typo in cogl/cogl-display.h #658700 - Bind the locale domain so that gettext actually works #659029 - Clipping problem #659360 - Optimization in _cogl_winsys_onscreen_swap_region causes tearing Many thanks too: Neil Roberts Matej Urbančič Abdalrahim G. Fakhouri Adel Gadllah Andika Triwidada Arash Mousavi Bruce Cowan Chun-wei Fan Duarte Loreto Emmanuele Bassi I Felix Ihar Hrachyshka Ioannis Zamboukas Laura Balbastre Luca Ferretti Manoj Kumar Giri Muhammet Kara Rudolfs Mazurs Tiffany Antopolski Wolfgang Stöggl Wouter Bolsterlee Xandru Armesto Yinghua Wang Yuri Myasoedov Мирослав Николић Cogl 1.7.8 2011-09-05 • List of changes since Cogl 1.7.6 » Getters for the display and renderer associated with context » Getter for the number of supported texture units during fragment processing. (ClutterGst needs to know this for example to know if GLSL based YUV->RGB color space conversion can be used.) » Optimizations for the GLSL codegen for fragment processing so we can ignore redundant layers - if for example the "REPLACE" function is used for layer N then computing anything for previous layers is redundant. Also if texture combining needs to sample the same texture multiple times we now re-use the same sample instead of repeating it. » Optimize texture uploads to a texture atlas on GLES by avoiding lots of redundant format conversions. » Relax the requirement to need braces around blend factors when using the CoglBlendString syntax. Braces are only needed for factors involving a subtraction like "(1 - SRC_COLOR[A])" » Adds API for querying the format of a CoglFramebuffer • List of bugs fixed since Cogl 1.7.6 https://bugzilla.gnome.org: #656426 - Improve the generated GLSL code #656441 - Build failure in examples #656587 - Outdated FSF Address in code files #657347 - Retrieve the number of texture image units #657840 - Atlas-ed bitmaps converted too many times #656809 - cogl 1.7.6 doesn't compile on Fedora 16/17 Many thanks to: Damien Lespiau Neil Roberts Emmanuele Bassi Cogl 1.7.6 2011-08-12 =============================================================================== • List of changes since Cogl 1.7.4 » Add an experimental cogl_matrix_look_at function » Fix flipping the y-coordinates for cogl_framebuffer_swap_region » Automatically allocate framebuffers on first use » Add experimental cogl_framebuffer_clear functions » Add a function to get the context given a framebuffer » Add support for a cogl.conf config file » Fix using TEXTURE_n as the source for a layer combine » Some fixes for the WGL backend » Add experimental API to upload a texture subregion from a CoglBuffer • List of bugs fixed since Cogl 1.7.4 https://bugzilla.gnome.org: #655026 - cogl-pango should not link to systemwide libcogl during make install #655216 - egl: Guard the feature discovery of eglCreateImage() #655228 - Bugs in cogl-quaternion library functions cogl_quaternion_init_from_array and cogl_quaternion_get_rotation_axis. #655355 - Make Cogl master work on EGL/GDL again #655400 - cogl-pipeline-fragend-arbfp: Initialise template_pipeline #655412 - Don't use the 'NULL' GModule to resolve GL symbols #655510 - Access Violation (a.k.a Segfault) in cogl/driver/gl/cogl-gl.c #655556 - Memory leak in function cogl_polygon in cogl-primitives.c #655723 - egl-gdl: Silence a gcc warning #655724 - egl-gdl: Don't generate cogl-display.h #656303 - Improve cogl-pango's journal usage #655792 - android: Commit the build.xml file #655791 - android: Update the hello example to the latest glib-android API change Many thanks to: Robert Bragg Damien Lespiau Chun-wei Fan Alexandre Rostovtsev Kirk A. Baker Philip Withnall Florian Renaut Cogl 1.7.4 2011-07-20 =============================================================================== • List of changes since Cogl 1.7.2 » Optimize pipeline unparent operation using embedded lists instead of using GList API. » Remove the old matrix operation code we had before pulling in the mesa based code, and flatten all our matrix utilities back into one maintainable file. » Expose cogl_framebuffer_get_red/green/blue/alpha bits to query the precision for a framebuffer's color channels. » Numerous reference manual updates » Fix some memory leaks in CoglPipeline that weren't captured in bugzilla. » Fix some EGL winsys issues that weren't captured in bugzilla. » Switch to dynamically loading libGL, libGLESv2 or libGLES[v1]_CM at runtime so it's possible to distribute a libcogl that can choose to work with any of these at runtime. This can simplify packaging on distros that have numerous packages that provide a platform specific GL/GLES driver and certainly helps during the development process when evaluating the pros-and-cons of different drivers for a given platform. » Clean up lots of inconsistencies with platform specific APIs, so we follow the naming convention of cogl__object_method. » Remove cogl_set_default_context from experimental 2.0 api, since we are aiming to remove the default context for 2.0 » Ensure the experimental 2.0 reference manual gets a unique DOC_MODULE name so that distro's trying to package cogl don't end up installing the 1.x and 2.0 manuals to the same location » Add a program cache for the GLSL backend, a bit like we have for the ARBfp backend. This can be a big boost in performance for some apps depending on your platform. » Adds dither_enable getter and setter API for CoglFramebuffer so that Clutter doesn't need to use the GL API directly when picking. We need to get to the point where Clutter doesn't need to link against libGL directly so Clutter can take advantage of runtime driver selection by Cogl. » Use MESA_pack_invert extension in cogl_read_pixels to avoid needing to manually flip pixel data read in bottom-up order to a top-down order. » Fix the hello example to actually clear the framebuffer at the start of the frame instead of unintentionally relying on the driver to have cleared the framebuffer. • List of bugs fixed since Cogl 1.7.2 https://bugzilla.gnome.org: #652514 - CoglPipeline could embed the list nodes for the children directly in the CoglPipeline struct #654440 - _cogl_winsys_context_init crash #654718 - clutter 1.6.16 compile issues #654593 - dlopening an unversionaed Shared Object is illegal. Many thanks to: Neil Roberts Damien Lespiau Emmanuele Bassi Takeshi AIHANA Cogl 1.7.2 2011-07-01 =============================================================================== • List of changes since Cogl 1.7.0 » Add an example program to draw a 3D crate » Add experimental API to get and set the viewport on a framebuffer without going through the implicit context. » Add API to select the winsys backend without having to use an environment variable. » Various documentation fixes. » Add winsys-specific typesafe APIs to replace the old cogl_renderer_handle_native_event functions. » Rename platform-specific APIs so that we consistently have cogl__symbol_name instead of cogl_symbol_name_. » Fixed building against GLES. • List of bugs fixed since Cogl 1.7.0 https://bugzilla.gnome.org: #652672 - Typo fix in cogl-framebuffer #653615 - cogl_release_status='snapshot' breaks linking on 64-bit systems due to namespace conflict with ltoptions.m4 #653229 - pipeline: Don't regenerate shaders when not changing the number of layers #653231 - pipeline: Don't trigger a change when binding the invalid texture target Many thanks to: Robert Bragg Adam Jackson Emmanuele Bassi Cogl 1.7.0 2011-06-10 =============================================================================== • List of changes since Clutter 1.6 » Cogl split out into a standalone project! » Added native winsys backends for GLX, WGL, EGL and Android (Quartz in progress) » Supported EGL platforms include: NULL, X11, GDL and Wayland » Adds renderer,display,onscreen-template and swap-chain APIs for writing standalone apps using the experimental 2.0 API » Added convenience functions cogl_matrix_view_2d_in_frustum/perspective for setting up a Clutter style view transform for a 2d coordinate system inside a projective perspective. » Added an experimental Quaternion API » Added an experimental Euler API » Re-worked the CoglPipeline depth testing state API » Added EGL X11 texture-from-pixmap support. » Added a tiny Wayland compositor (without input support) under examples/ » Optimizations: » Optimise paths that are just a rectangle » Journal: Use a pool of vertex-arrays to avoid allocation costs. • List of bugs fixed since Clutter 1.6 http://bugzilla.clutter-project.org: #2538 - crash in gnome-shell #2544 - Using vertex buffers causes memory corruption when you unref the CoglHandle #2561 - Updates to COGL sources regarding non-standard code usage #2588 - Assertion failure in _cogl_pipeline_set_layer_texture_target #2594 - cogl-clip-state: Adapt to experimental cogl2 API. #2620 - _cogl_offscreen_new_to_texture_full() leaks reference when failing https://bugzilla.gnome.org: #641197 - mouse events at pixel row zero are ignored #650966 - CoglPipeline doesn't support any layers on fixed function hardware #650979 - cogl-pipeline-fragend-fixed: Fix enabling texture targets #651256 - configure fails for the poor sods who use dash as sh Many thanks to: Neil Roberts Emmanuele Bassi Damien Lespiau James Athey Jasper St. Pierre Piotr Drąg