mutter/cogl
Robert Bragg 325c620f81 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.
2011-01-24 18:53:08 +00:00
..
driver cogl-buffer: Support mapping buffers for write on GLES 2011-01-13 16:36:45 +00:00
tesselator build: Do not build a noinst library for the tesselator 2010-09-12 19:25:47 +01:00
winsys cogl: call _cogl_texture_init for x11 tfp 2011-01-21 18:58:58 +00:00
cogl2-path.c cogl: rename CoglVertexAttribute CoglAttribute 2011-01-21 16:24:14 +00:00
cogl2-path.h path 2.0: update path API for experimental 2.0 API 2010-11-11 13:17:26 +00:00
cogl-atlas-texture-private.h Allow multiple CoglAtlases for textures 2010-12-13 18:59:41 +00:00
cogl-atlas-texture.c cogl-debug: Split the flags to support more than 32 2011-01-24 15:45:45 +00:00
cogl-atlas.c Allow multiple CoglAtlases for textures 2010-12-13 18:59:41 +00:00
cogl-atlas.h Allow multiple CoglAtlases for textures 2010-12-13 18:59:41 +00:00
cogl-attribute-private.h cogl: rename CoglVertexAttribute CoglAttribute 2011-01-21 16:24:14 +00:00
cogl-attribute.c cogl-debug: Split the flags to support more than 32 2011-01-24 15:45:45 +00:00
cogl-attribute.h cogl: rename CoglVertexAttribute CoglAttribute 2011-01-21 16:24:14 +00:00
cogl-bitmap-fallback.c cogl-bitmap: Encapsulate the CoglBitmap even internally 2010-07-15 17:24:01 +01:00
cogl-bitmap-pixbuf.c cogl: Don't assume that CoglBitmaps are allocated to height*rowstride 2011-01-10 16:55:01 +00:00
cogl-bitmap-private.h cogl: Don't assume that CoglBitmaps are allocated to height*rowstride 2011-01-10 16:55:01 +00:00
cogl-bitmap.c cogl-texture: Don't use the source rowstride if we have to copy bitmap 2011-01-10 16:54:58 +00:00
cogl-bitmap.h docs: Fixes for the Cogl API reference 2010-12-22 09:52:35 +00:00
cogl-bitmask.c cogl-vertex-attribute: Use glVertexAttribPointer on GLES2 2010-12-13 17:28:29 +00:00
cogl-bitmask.h cogl-vertex-attribute: Use glVertexAttribPointer on GLES2 2010-12-13 17:28:29 +00:00
cogl-blend-string.c cogl-debug: Split the flags to support more than 32 2011-01-24 15:45:45 +00:00
cogl-blend-string.h blend-strings: removes the AUTO_COMPOSITE function enum 2010-06-15 15:26:27 +01:00
cogl-buffer-private.h cogl: Fallback to set_data when mapping a buffer to fill it 2011-01-13 16:36:32 +00:00
cogl-buffer.c cogl-buffer: Support mapping buffers for write on GLES 2011-01-13 16:36:45 +00:00
cogl-buffer.h docs: Fixes for the Cogl API reference 2010-12-22 09:52:35 +00:00
cogl-callback-list.c cogl: Add an internal utility to maintain a list of callback functions 2010-08-12 11:54:42 +01:00
cogl-callback-list.h cogl: Add an internal utility to maintain a list of callback functions 2010-08-12 11:54:42 +01:00
cogl-clip-stack.c cogl-clip-stack: Fix flushing multiple stencil rectangles 2011-01-24 17:40:07 +00:00
cogl-clip-stack.h clip-stack: Adds _cogl_clip_stack_get_bounds API 2011-01-21 16:18:10 +00:00
cogl-clip-state.c clip: rename get_clip_stack + add framebuffer_get_stack 2011-01-21 16:18:10 +00:00
cogl-clip-state.h clip: rename get_clip_stack + add framebuffer_get_stack 2011-01-21 16:18:10 +00:00
cogl-color-private.h pipeline: Implements _cogl_pipeline_hash function 2010-12-07 16:00:32 +00:00
cogl-color.c cogl-color: add cogl_color_init_from_xyz funcs 2010-06-15 15:26:27 +01:00
cogl-color.h cogl-color: add cogl_color_init_from_xyz funcs 2010-06-15 15:26:27 +01:00
cogl-context.c cogl-debug: Split the flags to support more than 32 2011-01-24 15:45:45 +00:00
cogl-context.h journal: Support per-framebuffer journals 2011-01-21 16:18:10 +00:00
cogl-debug-options.h cogl-debug: Add a debug option for tracing clipping 2011-01-24 17:39:48 +00:00
cogl-debug.c cogl-debug: Add a debug option for tracing clipping 2011-01-24 17:39:48 +00:00
cogl-debug.h cogl-debug: Add a debug option for tracing clipping 2011-01-24 17:39:48 +00:00
cogl-defines.h.in configure: Include gl2ext.h or glext.h under GLES 2010-07-13 14:28:51 +01:00
cogl-deprecated.h Remove mentions of the FSF address 2010-03-01 12:56:10 +00:00
cogl-enum-types.c.in Intial Re-layout of the Cogl source code and introduction of a Cogl Winsys 2009-10-16 18:58:50 +01:00
cogl-enum-types.h.in Intial Re-layout of the Cogl source code and introduction of a Cogl Winsys 2009-10-16 18:58:50 +01:00
cogl-feature-private.c cogl: Add the infrastructure for checking for winsys extensions 2010-06-22 12:22:43 +01:00
cogl-feature-private.h cogl: Add the infrastructure for checking for winsys extensions 2010-06-22 12:22:43 +01:00
cogl-fixed.c Fixed "the the" repetitions in some doc strings 2010-11-25 18:18:51 +00:00
cogl-fixed.h analysis: Fix some CoglFixed API 2010-06-01 12:08:18 +01:00
cogl-framebuffer-private.h cogl: Implements a software only read-pixel fast-path 2011-01-21 16:18:11 +00:00
cogl-framebuffer.c framebuffer: flush journal when switching framebuffers 2011-01-24 18:53:08 +00:00
cogl-gtype-private.h matrix gtype: registers a boxed type for CoglMatrix 2010-12-07 12:16:50 +00:00
cogl-handle.h CoglObject: Adds cogl_object_{get,set}_user_data 2010-06-04 14:44:15 +01:00
cogl-index-array-private.h cogl: Adds experimental CoglIndexArray type 2010-11-03 18:04:00 +00:00
cogl-index-array.c cogl: rename CoglVertexAttribute CoglAttribute 2011-01-21 16:24:14 +00:00
cogl-index-array.h docs: Fixes for the Cogl API reference 2010-12-22 09:52:35 +00:00
cogl-indices-private.h indices: Makes cogl_indices_get_array public 2010-11-19 13:27:30 +00:00
cogl-indices.c indices: Makes cogl_indices_get_array public 2010-11-19 13:27:30 +00:00
cogl-indices.h indices: Makes cogl_indices_get_array public 2010-11-19 13:27:30 +00:00
cogl-internal.h cogl-vertex-attribute: Use glVertexAttribPointer on GLES2 2010-12-13 17:28:29 +00:00
cogl-journal-private.h cogl: Implements a software only read-pixel fast-path 2011-01-21 16:18:11 +00:00
cogl-journal.c cogl-debug: Add a debug option for tracing clipping 2011-01-24 17:39:48 +00:00
cogl-material-compat.c cogl: rename CoglMaterial -> CoglPipeline 2010-11-03 18:09:23 +00:00
cogl-material-compat.h docs: Fixes for the Cogl API reference 2010-12-22 09:52:35 +00:00
cogl-matrix-mesa.c Remove mentions of the FSF address 2010-03-01 12:56:10 +00:00
cogl-matrix-mesa.h Remove mentions of the FSF address 2010-03-01 12:56:10 +00:00
cogl-matrix-private.h cogl-debug: Split the flags to support more than 32 2011-01-24 15:45:45 +00:00
cogl-matrix-stack.c cogl: upload matrices with uniforms on GLES2 2010-12-13 17:29:13 +00:00
cogl-matrix-stack.h cogl: upload matrices with uniforms on GLES2 2010-12-13 17:29:13 +00:00
cogl-matrix.c matrix: fix transform/project_points() APIs 2011-01-21 16:18:11 +00:00
cogl-matrix.h matrix gtype: registers a boxed type for CoglMatrix 2010-12-07 12:16:50 +00:00
cogl-object-private.h cogl-object: Adds an internal _cogl_object_set_user_data 2011-01-21 16:18:10 +00:00
cogl-object.c cogl-object: Adds an internal _cogl_object_set_user_data 2011-01-21 16:18:10 +00:00
cogl-object.h docs: Fixes for the Cogl API reference 2010-12-22 09:52:35 +00:00
cogl-offscreen.h Add some more introspection annotations 2010-09-06 16:11:46 +01:00
cogl-path-private.h cogl: rename CoglVertexAttribute CoglAttribute 2011-01-21 16:24:14 +00:00
cogl-path.c path 2.0: update path API for experimental 2.0 API 2010-11-11 13:17:26 +00:00
cogl-path.h docs: Fixes for the Cogl API reference 2010-12-22 09:52:35 +00:00
cogl-pipeline-fragend-arbfp-private.h Rename CoglPipelineBackend to CoglPipelineFragend 2010-12-13 17:22:57 +00:00
cogl-pipeline-fragend-arbfp.c cogl-debug: Split the flags to support more than 32 2011-01-24 15:45:45 +00:00
cogl-pipeline-fragend-fixed-private.h Rename CoglPipelineBackend to CoglPipelineFragend 2010-12-13 17:22:57 +00:00
cogl-pipeline-fragend-fixed.c cogl-debug: Split the flags to support more than 32 2011-01-24 15:45:45 +00:00
cogl-pipeline-fragend-glsl-private.h cogl: Add a GLSL 'progend' 2010-12-13 17:22:57 +00:00
cogl-pipeline-fragend-glsl.c pipeline: differentiate texture target and data state 2011-01-13 12:23:33 +00:00
cogl-pipeline-opengl-private.h cogl-pipeline: Move texture enabling/disabling to fixed fragend 2010-12-13 17:22:57 +00:00
cogl-pipeline-opengl.c cogl-pipeline: Flush the lighting params in common code not vertend 2011-01-24 12:09:11 +00:00
cogl-pipeline-private.h journal: Support per-framebuffer journals 2011-01-21 16:18:10 +00:00
cogl-pipeline-progend-glsl-private.h cogl: rename CoglVertexAttribute CoglAttribute 2011-01-21 16:24:14 +00:00
cogl-pipeline-progend-glsl.c cogl-pipeline-progend-glsl: Generalize updating GLES2 uniforms 2011-01-24 12:09:11 +00:00
cogl-pipeline-vertend-fixed-private.h cogl: Add a fixed function vertend 2010-12-13 17:22:57 +00:00
cogl-pipeline-vertend-fixed.c cogl-debug: Split the flags to support more than 32 2011-01-24 15:45:45 +00:00
cogl-pipeline-vertend-glsl-private.h cogl: Add a vertend to generate GLSL 2010-12-13 17:28:28 +00:00
cogl-pipeline-vertend-glsl.c pipeline: differentiate texture target and data state 2011-01-13 12:23:33 +00:00
cogl-pipeline.c cogl-debug: Split the flags to support more than 32 2011-01-24 15:45:45 +00:00
cogl-pipeline.h docs: Fixes for the Cogl API reference 2010-12-22 09:52:35 +00:00
cogl-pixel-array-private.h pixel-array: Remove flags member and flag macros 2010-10-26 16:16:40 +01:00
cogl-pixel-array.c Remove the GLES2 wrapper 2010-12-13 17:29:14 +00:00
cogl-pixel-array.h pixel-array: Only allow allocation of arrays with a 2D size 2010-07-05 15:20:04 +01:00
cogl-point-in-poly-private.h cogl: Adds _cogl_util_point_in_polygon API 2011-01-21 16:18:11 +00:00
cogl-point-in-poly.c cogl: Adds _cogl_util_point_in_polygon API 2011-01-21 16:18:11 +00:00
cogl-primitive-private.h primitive: adds immutable ref/unref mechanism 2010-11-03 18:04:31 +00:00
cogl-primitive.c cogl: rename CoglVertexAttribute CoglAttribute 2011-01-21 16:24:14 +00:00
cogl-primitive.h cogl: rename CoglVertexAttribute CoglAttribute 2011-01-21 16:24:14 +00:00
cogl-primitives-private.h cogl: Don't flush the journal when flushing clip state 2010-11-04 18:10:08 +00:00
cogl-primitives.c cogl: rename CoglVertexAttribute CoglAttribute 2011-01-21 16:24:14 +00:00
cogl-primitives.h Use begin/end macros in cogl-primitives.h 2010-03-25 09:33:26 +00:00
cogl-private.h Add an internal _cogl_read_pixels_with_rowstride 2010-11-24 15:56:34 +00:00
cogl-profile.c cogl-debug: Split the flags to support more than 32 2011-01-24 15:45:45 +00:00
cogl-profile.h Initialize the cogl uprof state in cogl_create_context 2010-09-14 12:43:17 +01:00
cogl-program-private.h cogl-program: Add private functions to check if have each shader type 2010-12-13 17:22:57 +00:00
cogl-program.c cogl-program: Don't use separate definitions on GLES 1.1 2011-01-17 12:56:58 +00:00
cogl-rectangle-map.c cogl-debug: Split the flags to support more than 32 2011-01-24 15:45:45 +00:00
cogl-rectangle-map.h cogl-atlas: Rename to CoglRectangleMap 2010-08-12 11:54:42 +01:00
cogl-shader-boilerplate.h cogl-shader-boilerplate: Move the uniforms to the common code 2011-01-24 12:09:11 +00:00
cogl-shader-private.h Revert "cogl: Remove the generated array size for cogl_tex_coord_in" 2010-12-03 15:27:17 +00:00
cogl-shader.c cogl-debug: Split the flags to support more than 32 2011-01-24 15:45:45 +00:00
cogl-shader.h cogl-shader: Add deprecation guards for cogl_program_uniform_* 2010-09-03 16:59:01 +01:00
cogl-spans.c Remove mentions of the FSF address 2010-03-01 12:56:10 +00:00
cogl-spans.h Remove mentions of the FSF address 2010-03-01 12:56:10 +00:00
cogl-sub-texture-private.h Remove mentions of the FSF address 2010-03-01 12:56:10 +00:00
cogl-sub-texture.c journal: Support per-framebuffer journals 2011-01-21 16:18:10 +00:00
cogl-texture-2d-private.h cogl: rename CoglMaterial -> CoglPipeline 2010-11-03 18:09:23 +00:00
cogl-texture-2d-sliced-private.h cogl: rename CoglMaterial -> CoglPipeline 2010-11-03 18:09:23 +00:00
cogl-texture-2d-sliced.c journal: Support per-framebuffer journals 2011-01-21 16:18:10 +00:00
cogl-texture-2d.c journal: Support per-framebuffer journals 2011-01-21 16:18:10 +00:00
cogl-texture-3d-private.h cogl: rename CoglMaterial -> CoglPipeline 2010-11-03 18:09:23 +00:00
cogl-texture-3d.c journal: Support per-framebuffer journals 2011-01-21 16:18:10 +00:00
cogl-texture-3d.h Add a Cogl texture 3D backend 2010-07-13 14:28:52 +01:00
cogl-texture-driver.h Add a Cogl texture 3D backend 2010-07-13 14:28:52 +01:00
cogl-texture-private.h journal: Support per-framebuffer journals 2011-01-21 16:18:10 +00:00
cogl-texture-rectangle-private.h cogl: rename CoglMaterial -> CoglPipeline 2010-11-03 18:09:23 +00:00
cogl-texture-rectangle.c journal: Support per-framebuffer journals 2011-01-21 16:18:10 +00:00
cogl-texture.c journal: Support per-framebuffer journals 2011-01-21 16:18:10 +00:00
cogl-texture.h Remove mentions of the FSF address 2010-03-01 12:56:10 +00:00
cogl-types.h cogl: rename CoglVertexAttribute CoglAttribute 2011-01-21 16:24:14 +00:00
cogl-util.c cogl-util: Add an internal wrapper for the ffs function 2011-01-10 16:55:00 +00:00
cogl-util.h cogl-util: Add an internal wrapper for the ffs function 2011-01-10 16:55:00 +00:00
cogl-vector.c math: Adds an experimental cogl_vector3_* API 2010-05-20 17:18:24 +01:00
cogl-vector.h cogl: declare experimental symbols consistently 2010-06-30 18:51:31 +01:00
cogl-vertex-array-private.h cogl: Adds experimental CoglVertexArray type 2010-11-03 18:04:00 +00:00
cogl-vertex-array.c vertex-array: Adds data arg for _vertex_array_new() 2010-11-19 13:27:30 +00:00
cogl-vertex-array.h docs: Fixes for the Cogl API reference 2010-12-22 09:52:35 +00:00
cogl-vertex-buffer-private.h cogl: rename CoglVertexAttribute CoglAttribute 2011-01-21 16:24:14 +00:00
cogl-vertex-buffer.c cogl: rename CoglVertexAttribute CoglAttribute 2011-01-21 16:24:14 +00:00
cogl-vertex-buffer.h cogl: rename CoglVertexAttribute CoglAttribute 2011-01-21 16:24:14 +00:00
cogl.c cogl: rename CoglVertexAttribute CoglAttribute 2011-01-21 16:24:14 +00:00
cogl.h cogl: rename CoglVertexAttribute CoglAttribute 2011-01-21 16:24:14 +00:00
cogl.pc.in Intial Re-layout of the Cogl source code and introduction of a Cogl Winsys 2009-10-16 18:58:50 +01:00
Makefile.am cogl: rename CoglVertexAttribute CoglAttribute 2011-01-21 16:24:14 +00:00
stb_image.c Update stb_image.c 2010-03-03 17:02:51 +00:00