mutter/cogl/driver/gl
Robert Bragg cbd6951134 introduce texture loaders to make allocations lazy
This introduces the internal idea of texture loaders that track the
state for loading and allocating a texture. This defers a lot more work
until the texture is allocated.

There are several intentions to this change:

- provides a means for extending how textures are allocated without
  requiring all the parameters to be supplied in a single _texture_new()
  function call.

- allow us to remove the internal_format argument from all
  _texture_new() apis since using CoglPixelFormat is bad way of
  expressing the internal format constraints because it is too specific.

  For now the internal_format arguments haven't actually been removed
  but this patch does introduce replacement apis for controlling the
  internal format:

    cogl_texture_set_components() lets you specify what components your
    texture needs when it is allocated.
    cogl_texture_set_premultiplied() lets you specify whether a texture
    data should be interpreted as premultiplied or not.

- Enable us to support asynchronous texture loading + allocation in the
  future.

Of note, the _new_from_data() texture constructors all continue to
allocate textures immediately so that existing code doesn't need to be
adapted to manage the lifetime of the data being uploaded.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
(cherry picked from commit 6a83de9ef4210f380a31f410797447b365a8d02c)

Note: Compared to the original patch, the ->premultipled state for
textures isn't forced to be %TRUE in _cogl_texture_init since that
effectively ignores the users explicitly given internal_format which was
a mistake and on master that change should have been made in the patch
that followed. The gtk-doc comments for cogl_texture_set_premultiplied()
and cogl_texture_set_components() have also been updated in-line with
this fix.
2014-01-09 15:49:46 +00:00
..
gl introduce texture loaders to make allocations lazy 2014-01-09 15:49:46 +00:00
gles introduce texture loaders to make allocations lazy 2014-01-09 15:49:46 +00:00
cogl-attribute-gl-private.h buffer: splits out GL specific code 2013-01-22 17:47:59 +00:00
cogl-attribute-gl.c Use COGL_FLAGS_* for the context's private feature flags 2013-11-28 18:12:22 +00:00
cogl-buffer-gl-private.h Allow propogation of OOM errors to apps 2013-01-22 17:48:07 +00:00
cogl-buffer-gl.c buffer: Don't set the invalidate hint when requesting read access 2013-02-19 15:03:30 +00:00
cogl-clip-stack-gl-private.h clip-stack: Splits out opengl specific code 2013-01-22 17:47:59 +00:00
cogl-clip-stack-gl.c Use COGL_FLAGS_* for the context's private feature flags 2013-11-28 18:12:22 +00:00
cogl-framebuffer-gl-private.h framebuffer: Bind the framebuffer before querying the bits 2013-01-22 17:48:18 +00:00
cogl-framebuffer-gl.c texture: make cogl_texture_get_format api private 2014-01-09 15:49:35 +00:00
cogl-pipeline-fragend-fixed-private.h Re-organize the source layout 2013-01-22 17:47:19 +00:00
cogl-pipeline-fragend-fixed.c Remove cogl-internal.h 2013-01-22 17:48:17 +00:00
cogl-pipeline-fragend-glsl-private.h Re-organize the source layout 2013-01-22 17:47:19 +00:00
cogl-pipeline-fragend-glsl.c Use COGL_FLAGS_* for the context's private feature flags 2013-11-28 18:12:22 +00:00
cogl-pipeline-opengl-private.h pipeline: improve real_blend_enable checks 2013-06-06 21:27:09 +01:00
cogl-pipeline-opengl.c Use COGL_FLAGS_* for the context's private feature flags 2013-11-28 18:12:22 +00:00
cogl-pipeline-progend-fixed-private.h Re-organize the source layout 2013-01-22 17:47:19 +00:00
cogl-pipeline-progend-fixed.c Use COGL_FLAGS_* for the context's private feature flags 2013-11-28 18:12:22 +00:00
cogl-pipeline-progend-glsl-private.h Re-organize the source layout 2013-01-22 17:47:19 +00:00
cogl-pipeline-progend-glsl.c Use COGL_FLAGS_* for the context's private feature flags 2013-11-28 18:12:22 +00:00
cogl-pipeline-vertend-fixed-private.h Re-organize the source layout 2013-01-22 17:47:19 +00:00
cogl-pipeline-vertend-fixed.c Don't generate GLSL for the point size for default pipelines 2013-06-21 14:18:37 +01:00
cogl-pipeline-vertend-glsl-private.h Re-organize the source layout 2013-01-22 17:47:19 +00:00
cogl-pipeline-vertend-glsl.c Use COGL_FLAGS_* for the context's private feature flags 2013-11-28 18:12:22 +00:00
cogl-texture-2d-gl-private.h texture: remove _cogl_texture_prepare_for_upload 2013-07-29 16:31:44 +01:00
cogl-texture-2d-gl.c introduce texture loaders to make allocations lazy 2014-01-09 15:49:46 +00:00
cogl-texture-gl-private.h Move _cogl_texture_get_gl_format to -texture-gl.c 2013-01-22 17:48:17 +00:00
cogl-texture-gl.c Use COGL_FLAGS_* for the context's private feature flags 2013-11-28 18:12:22 +00:00
cogl-util-gl-private.h Add the layer's sampler and uniform declarations at the start 2013-02-27 15:53:43 +00:00
cogl-util-gl.c Add the layer's sampler and uniform declarations at the start 2013-02-27 15:53:43 +00:00