mutter/cogl
Neil Roberts c8ddb3b55a 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
2011-02-15 12:10:54 +00:00
..
driver cogl-gles: Check for the GL_ANGLE_framebuffer_blit extension 2011-02-15 12:10:54 +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-framebuffer: Separate the draw and read buffer 2011-02-15 12:10:54 +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-atlas-texture: Make copying a texture out more robust 2011-02-15 12:10:54 +00:00
cogl-atlas.c cogl-atlas: Try 4 different approaches for migrating textures 2011-02-15 12:10:54 +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-framebuffer: Separate the draw and read buffer 2011-02-15 12:10:54 +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-blit.c cogl-atlas: Try 4 different approaches for migrating textures 2011-02-15 12:10:54 +00:00
cogl-blit.h cogl-atlas: Try 4 different approaches for migrating textures 2011-02-15 12:10:54 +00: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-framebuffer: Separate the draw and read buffer 2011-02-15 12:10:54 +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 cogl-framebuffer: Separate the draw and read buffer 2011-02-15 12:10:54 +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-atlas: Try 4 different approaches for migrating textures 2011-02-15 12:10:54 +00:00
cogl-context.h cogl-atlas: Try 4 different approaches for migrating textures 2011-02-15 12:10:54 +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-framebuffer: Add _cogl_blit_framebuffer 2011-02-15 12:10:54 +00:00
cogl-framebuffer.c cogl-framebuffer: Add _cogl_blit_framebuffer 2011-02-15 12:10:54 +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-framebuffer: Separate the draw and read buffer 2011-02-15 12:10:54 +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-framebuffer: Separate the draw and read buffer 2011-02-15 12:10:54 +00:00
cogl-matrix-stack.h cogl: upload matrices with uniforms on GLES2 2010-12-13 17:29:13 +00:00
cogl-matrix.c cogl-matrix: Get rid of the *_packed variants 2011-02-01 13:18:43 +00:00
cogl-matrix.h matrix: note that _matrix_multiply can multiply in-place 2011-02-09 17:21:48 +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: Set the layer matrix on the right layer instead of a random one 2011-02-09 16:14:13 +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 cogl: Set the layer matrix on the right layer instead of a random one 2011-02-09 16:14:13 +00:00
cogl-pipeline.c cogl-pipeline: Fix comparing the color in set_layer_combine_constant 2011-02-01 17:50:10 +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-framebuffer: Separate the draw and read buffer 2011-02-15 12:10:54 +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-texture-2d: Add _cogl_is_texture_2d to the private header 2011-02-15 12:10:54 +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 cogl-texture-2d: Add an internal wrapper around glCopyTexSubImage2D 2011-02-15 12:10:54 +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 cogl-framebuffer: Separate the draw and read buffer 2011-02-15 12:10:54 +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-vertex-buffer: Use a ref count on the pipeline private data 2011-02-01 18:47:05 +00:00
cogl-vertex-buffer.h docs: clarify cogl_vertex_buffer_adds docs 2011-02-09 19:12:12 +00:00
cogl.c cogl-framebuffer: Separate the draw and read buffer 2011-02-15 12:10:54 +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-atlas: Try 4 different approaches for migrating textures 2011-02-15 12:10:54 +00:00
stb_image.c Update stb_image.c 2010-03-03 17:02:51 +00:00