3 • List of changes since Cogl 1.10.0
5 » Fix for fallback path in cogl_texture_get_data when reading from
7 » Bug fix to make cogl_pipeline_get_depth_state work
8 » The cogl-crate and cogl-msaa examples now show error messages if
10 » cogl_context_new no longer crashes if initialisation fails when
12 » Visual Studio build fixes
15 • List of bugs fixed since Cogl 1.10.0
17 https://bugzilla.gnome.org:
19 #672533 - Quartz image option causes compile error
20 #673137 - Grab the current window -> Screenshot is mirrored
29 Krishnababu Krothapalli
33 Cogl 1.10.0 2012-03-20
35 • List of changes since Cogl 1.9.8
37 » Add cogl_framebuffer_draw_[*_]rectangle functions. These can be
38 used as a replacement for cogl_rectangle in the 2.0 API to avoid
39 the global framebuffer stack.
40 » Fixed flushing the point size with the GL driver when using GLSL.
41 » Added the missing cogl_is_onscreen and cogl_is_framebuffer functions.
42 » Added cogl_quaternion_init_from_quaternion and
43 cogl_quaternion_init_from_matrix to the public headers.
44 » Make cogl_has_feature available when only
45 COGL_ENABLE_EXPERIMENTAL_API is defined.
46 » Add cogl_framebuffer_read_pixels. This is a convenience wrapper
47 around cogl_framebuffer_read_pixels_into_bitmap to read directly
48 into an application's buffer.
49 » Added a public cogl_bitmap_new_for_data function. This can be used
50 for example to call cogl_framebuffer_read_pixels_into_bitmap to
51 read directly into an application's buffer with an unusual
53 » Visual Studio build fixes
56 • List of bugs fixed since Cogl 1.9.8
58 https://bugzilla.gnome.org:
60 #669122 - Clipped redraws and tearing
61 #671984 - cogl glyph cache uses uninitialised variable.
62 #671985 - cogl matrix stack has a use after realloc
63 #672038 - Move the fallback define for GL_PACK_INVERT_MESA
64 #672174 - cogl_path_curve_to second parameter ignored
65 #672243 - Drive by leak fix when code spelunking
92 • List of changes since Cogl 1.9.6
94 » Various Visual Studio build fixes
95 » Correctly check for GL_EXT_packed_depth_stencil and support using
96 GL_OES_packed_depth_stencil on GLES2
97 » Correctly handle pre-multiplied alpha conversions when reading
99 » Added cogl_renderer_{get,set}_driver functions so the underlying
100 driver can be chosen programmatically.
101 » Revamped the conformance testing framework so that it
102 automatically runs every test against GLES2 as well as GL and also
103 against all of the pipeline backends and with npot textures
105 » Add a conformance test for reading back an RGBA texture as
107 » Added support for converting between all of Cogl's supported pixel
108 formats including pre-multiplied alpha conversions.
109 » Added conformance tests for converting to and from all of the
111 » Added a public cogl_framebuffer_read_pixels_into_bitmap()
112 function which will effective read into a CoglPixelBuffer.
113 » CoglPixelBuffer was changed to no longer have associated width,
114 height and format information and instead we will rely on
115 CoglBitmap to track that informations. The relationship is
116 analogous how CoglAttributes relate to CoglAttributeBuffers
117 and means for example that a CoglPixelBuffer could now be used
118 to hold multiple images.
119 » Added public cogl_bitmap_get_{width,height,format,rowstride} api
120 » Added a public accessor for the underlying pixel buffer of a
122 » Added various missing cast macros for some buffer objects.
123 » Ported the Clutter based test-pixel-buffer test to be standalone.
125 • List of bugs fixed since Cogl 1.9.6
127 https://bugzilla.gnome.org:
129 #666184 - framebuffer: Enable a single depth and stencil buffer for GLES
130 #670793 - Don't use cogl_get_draw_framebuffer when flushing pipeline state
131 #671016 - INVALID_ENUM errors in gnome-shell
143 Cogl 1.9.6 2012-02-21
145 • List of changes since Cogl 1.9.4
147 » New conformance tests or tests ported from Clutter:
151 » New public experimental functions:
152 cogl_pipeline_get_layer_texture
154 cogl_primitive_foreach_attribute
155 cogl_primitive_get_indices
156 cogl_pipeline_get_layer_{min,max}_filter
157 » Added cogl_kms_renderer_get_kms_fd to get the KMS file descriptor.
158 » Bug fixed in the KMS support where it would crash on cleanup if it
159 couldn't save the CRTC state.
160 » Bug fixed in the Wayland compositor support where it would leak
161 EGLImages when creating a texture from a buffer
162 » The swap_buffer callback in GLX is now delayed until
163 cogl_poll_dispatch is called so that apps can handle it more
165 » Fixes for bugs with pipelines that are trying to use a layer with
167 » New cogl_framebuffer_* API for drawing directly to the framebuffer
168 without having to push the framebuffer. Ideally we want to move
169 towards this style of API in future with no global stacks.
170 » Most of the _EXP suffixes have been removed from the experimental
171 API symbols in the hope that the gtk-doc unstable annotation will
172 be enough to distinguish these.
173 » Add a COGL_DEBUG=winsys option
174 » CoglBuffer and CoglPrimitive now take an explicit CoglContext
175 argument in their constructor. We want to move towards getting rid
176 of the global context.
177 » Updates to the MSVC build support.
178 » Add cogl_pipeline_set_layer_null_texture(). This can be used for
179 base pipelines instead of having to create a dummy texture.
180 » Fix some bugs where Cogl was assuming there is a direct mapping
181 between the pipeline layer number and the GL texture unit number.
182 » In snippets, there are now always builtin sampler uniforms for
183 every layer of the pipeline. This makes it easier to write GLSL
184 that samples arbitrary units.
185 » The texture lookup snippet hook now gets passed the sampler for
186 the unit. The snippet can use this to sample the texture multiple
188 » Some public constants for CoglPixelFormat have been removed
189 (COGL_UNPREMULT_MASK, COGL_UNORDERED_MASK and
190 COGL_PIXEL_FORMAT_{24,32}).
191 » 30-bit pixel formats added.
192 » COGL_DEBUG=wireframes now correctly renders primitives using
193 vertex shader snippets.
194 » cogl_framebuffer_swap_buffers and friends have been renamed to
195 cogl_onscreen_swap_buffers.
196 » If the experimental 2.0 API is requested, as far as possible the
197 headers for the 1.0 API are no longer included. Define
198 COGL_ENABLE_EXPERIMENTAL_API instead if you want to mix both APIs.
200 • List of bugs fixed since Cogl 1.9.4
202 https://bugzilla.gnome.org:
204 #660188 - Color corruption with software rendering at 30-bit color depth
205 #668385 - Missing G_END_DECLS in cogl-poll.h
206 #668856 - Do not look for GLES2-only GLSL prototypes on GL
207 #668913 - The journal for an offscreen doesn't get flushed when
208 cogl_texture_get_data is called
209 #669368 - Reading back texture fails with ‘Invalid operation’ + wrong image
210 #669785 - Build fixes for COGL master (1.9.x)
212 • Note the following conformance tests are currently failing with
213 the GLES2 driver but they were also failing in 1.9.4:
214 test_cogl_depth_test, test_cogl_sub_texture, test_cogl_texture_3d
231 Cogl 1.9.4 2012-01-16
233 • List of changes since Cogl 1.9.2
235 » Visual Studio 2008/2010 project files have landed and are being actively
236 maintained by Chun-wei Fan <fanchunwei@src.gnome.org>
237 » A basic KMS (Kernel Mode Setting) backend was added so we can run fullscreen
238 Cogl applications without X11 on Linux.
239 » EGL platforms can now be selected at runtime. Although we've had the ability
240 select backends at runtime for a while, up until now all EGL platforms were
241 part of one monolithic backend and were mutually exclusive so a platform
242 had to be chosen at build time.
243 » cogl_matrix_orthographic() was added as a replacement for cogl_matrix_ortho()
244 since the OpenGL style of arguments for cogl_matrix_ortho() wasn't consistent
245 with the rest of the Cogl API.
246 » Experimental cogl_framebuffer_ apis were added for manipulating the
247 per-framebuffer modelview matrix stack. The aim is for these to replace
248 apis like cogl_rotate/translate/scale because those apis aren't explicitly
249 related to a CoglContext which we'd like to avoid so we can remove the
250 need for a global CoglContext.
251 » Experimental cogl_framebuffer apis were added for manipulating the
252 per-framebuffer clip stacks.
253 » The internal _cogl_framebuffer_flush_state() function was optimized to do
254 a better job of bailing out when no framebuffer state has changed, and
255 when state has changed the cost should now scale by the number of changes
256 made instead of scaling by the total range of framebuffer state that Cogl
258 » Internally we finally removed _cogl_enable() which won't mean much to most
259 people but makes the maintainers happy. This happened as part of a rework
260 for how attribute state is flushed when drawing which fixed some problems
261 with supporting custom attributes and should improve the performance of
262 flushing attributes too.
263 » We added an experimental CoglSnippets api aiming to greatly simplify how
264 developers can incorporate snippets of GLSL code into the pipeline. This is
265 a feature that has been on the drawing board for a long time so we're
266 really happy that it's finally here.
268 *** We'd really love to see people start to play with the snippets API and
269 tell us how they get on. The plan is for this API to replace all need for
270 developers to use the CoglProgram and CoglShader apis which are rather poor
271 copies of the OpenGL APIs for using GLSL which don't map well to Cogl's
274 » We've updated Cogl's client side Wayland support
275 » We've updated Cogl's compositor side Wayland support, including updating the
276 example cogland compositor.
277 » We added an SDL window system backend for Cogl, which provides a simple,
278 portable way to play with Cogl as a standalone graphics API with basic
279 support for input events available from SDL. See examples/cogl-sdl-hello
280 to see how that works.
281 » We added mainloop integration support to Cogl. Since we want to have the
282 ability to use poll() to block for events from some drivers we have introduced
283 apis that all Cogl applications are required to use to integrate Cogl
284 into their mainloop. For applications using a glib mainloop we've provided
285 a GSource for convenience.
287 • List of bugs fixed since Cogl 1.9.2
289 https://bugzilla.gnome.org:
291 #650020 - Visual C++ 2008/2010 Project files to compile Cogl and Cogl-Pango
292 #665190 - The conformance test wrapper scripts don't return an exit code
293 #665604 - Cogl needs to bind the framebuffer before calling eglSwapBuffers
294 #665722 - Build Fixes for COGL master branch
295 #665723 - Conformance tests failed (snippets, pipeline_uniforms)
296 #667009 - Remove DRM vblank hack
313 Cogl 1.9.2 2011-11-23
315 • List of changes since Cogl 1.8.0
317 » Fix a crash while generating ARBfp code with layers containing a
319 » Improvements to the mingw-fetch-dependencies script to work
320 without first needing to find a copy of config.guess.
321 » Translation updates.
322 » Ported more conformance tests from Clutter to be standalone Cogl tests.
323 » Adds experimental support for EXT_discard_framebuffer extension which
324 is important for good performance on PowerVR graphics hardware
325 » Adds experimental API to enable clipping to the silhouette of an arbitrary
327 » Make the CoglTexture2DSliced API directly available as experimental API
328 » Adds a new feature checking API that's not limited to just 32 features
329 and also must be passed a CoglContext pointer so it's clear at what point
330 the features can start to be queried.
331 » Adds an experimental CoglMetaTexture interface that gives one simple
332 api for mapping meta-textures that aren't directly understood by the GPU
333 (such as sliced textures, atlas textures, sub textures) into low level
334 textures. This interface also gives us a single place to handle repeat
335 mode fallbacks, supporting clamp-to-edge, repeat and mirrored repeat.
336 » Make the CoglTextureRectangle API directly available as experimental API
337 » Adds experimental support for multisampling, which is where the gpu
338 calculates multiple samples per pixel and the final pixel is a weighted
339 average of those samples. For example you can expect that multisampling
340 with 4 samples per pixel would give similar quality to rendering at double
341 the resolution and then scaling that image down with texture filtering, but
342 the GPU can often do some tricks such that multisampling is faster than
343 doing that manually (known as supersampling)
344 » Make the CoglSubTexture API directly available as experimental API
345 » Added an n_indices argument to cogl_primitive_set_indices to avoid needing
346 to always call cogl_primitive_set_n_vertices() after using the api and
347 to make it less error prone to use the api.
348 » Ship a standalone cogl-xlib.h that must be included manually for any xlib
349 specific api because the Xlib headers so many numerous badly namespaced
350 symbols that it's not desireable to include them unless absolutely
352 » Updated the Wayland support to work with the latest upstream interfaces.
353 » Add experimental CoglPipeline API for controlling the backface culling.
354 » Added a cogl_matrix_transpose() function
355 » Add experimental support for setting uniforms on a CoglPipeline. This
356 is in preparation for being able to associate snippets of GLSL that hook
357 into specific parts of the pipeline. We plan to eventually deprecate
358 CoglProgram but even in the meantime we would also recommend setting
359 uniforms on the pipeline now instead of the program.
360 » Adds experimental cogl_framebuffer_finish() api for explicitly synchonizing
361 the GPU with the CPU.
363 • List of bugs fixed since Cogl 1.8.0
365 https://bugzilla.gnome.org:
367 #656755 - Install the examples
368 #658700 - Bind the locale domain so that gettext actually works
369 #660184 - Running an X client causes a segfault when using software
371 #660387 - test-color-mask fails due to uninitialized texture data
372 #660617 - Porting of clutter tests
373 #660986 - memory leak in CoglPipeline::layers_cache
374 #661019 - Indices don't seem to work
375 #661174 - Remove inclusion of Xlib headers from Cogl headers
376 #662184 - Pipeline shaders often fail to link on GLES2 because of different
378 #662542 - The ARBfp and GLSL pipeline backends sometimes don't flush
380 #663578 - _COGL_RETURN_IF_FAIL sometimes doesn't use glib
381 #663628 - Make the pipeline backface culling experimental public
395 Daniel Martinez Cucalon
411 Cogl 1.8.0 2011-09-19
413 • List of changes since Cogl 1.7.8
415 » Started porting Cogl conformance tests from Clutter to be standalone
416 Cogl tests including tests for depth-state and backface culling.
417 » Added a new color mask conformance test
418 » We no longer implicitly define COGL_ENABLE_EXPERIMENTAL_2_0_API in the
419 cogl-2.0-experimental.pc file cflags because the way pkgconfig works makes
420 it hard to then consume libraries depending on cogl-2.0-experimental.pc
422 » Made progress re-factoring cogl-pipeline.c to be more maintainable by
423 starting to split the code up into more manageable pieces.
424 » We now bind the locale dir for the Cogl domain during init
425 » We now track backface culling state as part of CoglPipeline.
427 • List of bugs fixed since Cogl 1.7.8
429 https://bugzilla.gnome.org:
431 #656442 - README points to wrong bug product
432 #658092 - St ::hover transitions don't act as expected
433 #658333 - Typo in cogl/cogl-display.h
434 #658700 - Bind the locale domain so that gettext actually works
435 #659029 - Clipping problem
436 #659360 - Optimization in _cogl_winsys_onscreen_swap_region causes tearing
441 Abdalrahim G. Fakhouri
465 Cogl 1.7.8 2011-09-05
467 • List of changes since Cogl 1.7.6
469 » Getters for the display and renderer associated with context
470 » Getter for the number of supported texture units during fragment
471 processing. (ClutterGst needs to know this for example to know if GLSL
472 based YUV->RGB color space conversion can be used.)
473 » Optimizations for the GLSL codegen for fragment processing so we can
474 ignore redundant layers - if for example the "REPLACE" function is used
475 for layer N then computing anything for previous layers is redundant. Also
476 if texture combining needs to sample the same texture multiple times we
477 now re-use the same sample instead of repeating it.
478 » Optimize texture uploads to a texture atlas on GLES by avoiding lots of
479 redundant format conversions.
480 » Relax the requirement to need braces around blend factors when using the
481 CoglBlendString syntax. Braces are only needed for factors involving a
482 subtraction like "(1 - SRC_COLOR[A])"
483 » Adds API for querying the format of a CoglFramebuffer
485 • List of bugs fixed since Cogl 1.7.6
487 https://bugzilla.gnome.org:
489 #656426 - Improve the generated GLSL code
490 #656441 - Build failure in examples
491 #656587 - Outdated FSF Address in code files
492 #657347 - Retrieve the number of texture image units
493 #657840 - Atlas-ed bitmaps converted too many times
494 #656809 - cogl 1.7.6 doesn't compile on Fedora 16/17
501 Cogl 1.7.6 2011-08-12
502 ===============================================================================
504 • List of changes since Cogl 1.7.4
506 » Add an experimental cogl_matrix_look_at function
507 » Fix flipping the y-coordinates for cogl_framebuffer_swap_region
508 » Automatically allocate framebuffers on first use
509 » Add experimental cogl_framebuffer_clear functions
510 » Add a function to get the context given a framebuffer
511 » Add support for a cogl.conf config file
512 » Fix using TEXTURE_n as the source for a layer combine
513 » Some fixes for the WGL backend
514 » Add experimental API to upload a texture subregion from a CoglBuffer
516 • List of bugs fixed since Cogl 1.7.4
518 https://bugzilla.gnome.org:
520 #655026 - cogl-pango should not link to systemwide libcogl during make
522 #655216 - egl: Guard the feature discovery of eglCreateImage()
523 #655228 - Bugs in cogl-quaternion library functions
524 cogl_quaternion_init_from_array and
525 cogl_quaternion_get_rotation_axis.
526 #655355 - Make Cogl master work on EGL/GDL again
527 #655400 - cogl-pipeline-fragend-arbfp: Initialise template_pipeline
528 #655412 - Don't use the 'NULL' GModule to resolve GL symbols
529 #655510 - Access Violation (a.k.a Segfault) in cogl/driver/gl/cogl-gl.c
530 #655556 - Memory leak in function cogl_polygon in cogl-primitives.c
531 #655723 - egl-gdl: Silence a gcc warning
532 #655724 - egl-gdl: Don't generate cogl-display.h
533 #656303 - Improve cogl-pango's journal usage
534 #655792 - android: Commit the build.xml file
535 #655791 - android: Update the hello example to the latest glib-android
547 Cogl 1.7.4 2011-07-20
548 ===============================================================================
550 • List of changes since Cogl 1.7.2
552 » Optimize pipeline unparent operation using embedded lists instead
554 » Remove the old matrix operation code we had before pulling in the
555 mesa based code, and flatten all our matrix utilities back into one
557 » Expose cogl_framebuffer_get_red/green/blue/alpha bits to query
558 the precision for a framebuffer's color channels.
559 » Numerous reference manual updates
560 » Fix some memory leaks in CoglPipeline that weren't captured in
562 » Fix some EGL winsys issues that weren't captured in bugzilla.
563 » Switch to dynamically loading libGL, libGLESv2 or libGLES[v1]_CM
564 at runtime so it's possible to distribute a libcogl that can choose
565 to work with any of these at runtime. This can simplify packaging
566 on distros that have numerous packages that provide a platform
567 specific GL/GLES driver and certainly helps during the development
568 process when evaluating the pros-and-cons of different drivers for
570 » Clean up lots of inconsistencies with platform specific APIs, so
571 we follow the naming convention of cogl_<platform>_object_method.
572 » Remove cogl_set_default_context from experimental 2.0 api, since
573 we are aiming to remove the default context for 2.0
574 » Ensure the experimental 2.0 reference manual gets a unique
575 DOC_MODULE name so that distro's trying to package cogl don't end
576 up installing the 1.x and 2.0 manuals to the same location
577 » Add a program cache for the GLSL backend, a bit like we have for
578 the ARBfp backend. This can be a big boost in performance for some
579 apps depending on your platform.
580 » Adds dither_enable getter and setter API for CoglFramebuffer so
581 that Clutter doesn't need to use the GL API directly when picking.
582 We need to get to the point where Clutter doesn't need to link
583 against libGL directly so Clutter can take advantage of runtime
584 driver selection by Cogl.
585 » Use MESA_pack_invert extension in cogl_read_pixels to avoid
586 needing to manually flip pixel data read in bottom-up order to a
588 » Fix the hello example to actually clear the framebuffer at the
589 start of the frame instead of unintentionally relying on the driver
590 to have cleared the framebuffer.
592 • List of bugs fixed since Cogl 1.7.2
594 https://bugzilla.gnome.org:
596 #652514 - CoglPipeline could embed the list nodes for the
597 children directly in the CoglPipeline struct
598 #654440 - _cogl_winsys_context_init crash
599 #654718 - clutter 1.6.16 compile issues
600 #654593 - dlopening an unversionaed Shared Object is illegal.
608 Cogl 1.7.2 2011-07-01
609 ===============================================================================
611 • List of changes since Cogl 1.7.0
613 » Add an example program to draw a 3D crate
615 » Add experimental API to get and set the viewport on a framebuffer
616 without going through the implicit context.
618 » Add API to select the winsys backend without having to use an
619 environment variable.
621 » Various documentation fixes.
623 » Add winsys-specific typesafe APIs to replace the old
624 cogl_renderer_handle_native_event functions.
626 » Rename platform-specific APIs so that we consistently have
627 cogl_<platform>_symbol_name instead of cogl_symbol_name_<platform>.
629 » Fixed building against GLES.
631 • List of bugs fixed since Cogl 1.7.0
633 https://bugzilla.gnome.org:
635 #652672 - Typo fix in cogl-framebuffer
636 #653615 - cogl_release_status='snapshot' breaks linking on 64-bit
637 systems due to namespace conflict with ltoptions.m4
638 #653229 - pipeline: Don't regenerate shaders when not changing the
640 #653231 - pipeline: Don't trigger a change when binding the invalid
648 Cogl 1.7.0 2011-06-10
649 ===============================================================================
651 • List of changes since Clutter 1.6
653 » Cogl split out into a standalone project!
655 » Added native winsys backends for GLX, WGL, EGL and Android (Quartz in
657 » Supported EGL platforms include: NULL, X11, GDL and Wayland
659 » Adds renderer,display,onscreen-template and swap-chain APIs for
660 writing standalone apps using the experimental 2.0 API
662 » Added convenience functions cogl_matrix_view_2d_in_frustum/perspective
663 for setting up a Clutter style view transform for a 2d coordinate system
664 inside a projective perspective.
666 » Added an experimental Quaternion API
668 » Added an experimental Euler API
670 » Re-worked the CoglPipeline depth testing state API
672 » Added EGL X11 texture-from-pixmap support.
674 » Added a tiny Wayland compositor (without input support) under
678 » Optimise paths that are just a rectangle
679 » Journal: Use a pool of vertex-arrays to avoid allocation costs.
681 • List of bugs fixed since Clutter 1.6
683 http://bugzilla.clutter-project.org:
684 #2538 - crash in gnome-shell
685 #2544 - Using vertex buffers causes memory corruption when you unref the CoglHandle
686 #2561 - Updates to COGL sources regarding non-standard code usage
687 #2588 - Assertion failure in _cogl_pipeline_set_layer_texture_target
688 #2594 - cogl-clip-state: Adapt to experimental cogl2 API.
689 #2620 - _cogl_offscreen_new_to_texture_full() leaks reference when failing
691 https://bugzilla.gnome.org:
692 #641197 - mouse events at pixel row zero are ignored
693 #650966 - CoglPipeline doesn't support any layers on fixed function hardware
694 #650979 - cogl-pipeline-fragend-fixed: Fix enabling texture targets
695 #651256 - configure fails for the poor sods who use dash as sh