mutter/cogl
Robert Bragg bcd97f35ea Adds renderer,display,onscreen-template and swap-chain stubs
As part of the process of splitting Cogl out as a standalone graphics
API we need to introduce some API concepts that will allow us to
initialize a new CoglContext when Clutter isn't there to handle that for
us...

The new objects roughly in the order that they are (optionally) involved
in constructing a context are: CoglRenderer, CoglOnscreenTemplate,
CoglSwapChain and CoglDisplay.

Conceptually a CoglRenderer represents a means for rendering.  Cogl
supports rendering via OpenGL or OpenGL ES 1/2.0 and those APIs are
accessed through a number of different windowing APIs such as GLX, EGL,
SDL or WGL and more. Potentially in the future Cogl could render using
D3D or even by using libdrm and directly banging the hardware. All these
choices are wrapped up in the configuration of a CoglRenderer.

Conceptually a CoglDisplay represents a display pipeline for a renderer.
Although Cogl doesn't aim to provide a detailed abstraction of display
hardware, on some platforms we can give control over multiple display
planes (On TV platforms for instance video content may be on one plane
and 3D would be on another so a CoglDisplay lets you select the plane
up-front.)

Another aspect of CoglDisplay is that it lets us negotiate a display
pipeline that best supports the type of CoglOnscreen framebuffers we are
planning to create. For instance if you want transparent CoglOnscreen
framebuffers then we have to be sure the display pipeline wont discard
the alpha component of your framebuffers. Or if you want to use
double/tripple buffering that requires support from the display
pipeline.

CoglOnscreenTemplate and CoglSwapChain are how we describe our default
CoglOnscreen framebuffer configuration which can affect the
configuration of the display pipeline.

The default/simple way we expect most CoglContexts to be constructed
will be via something like:

 if (!cogl_context_new (NULL, &error))
   g_error ("Failed to construct a CoglContext: %s", error->message);

Where that NULL is for an optional "display" parameter and NULL says to
Cogl "please just try to do something sensible".

If you want some more control though you can manually construct a
CoglDisplay something like:

 display = cogl_display_new (NULL, NULL);
 cogl_gdl_display_set_plane (display, plane);
 if (!cogl_display_setup (display, &error))
   g_error ("Failed to setup a CoglDisplay: %s", error->message);

And in a similar fashion to cogl_context_new() you can optionally pass
a NULL "renderer" and/or a NULL "onscreen template" so Cogl will try to
just do something sensible.

If you need to change the CoglOnscreen defaults you can provide a
template something like:
  chain = cogl_swap_chain_new ();
  cogl_swap_chain_set_has_alpha (chain, TRUE);
  cogl_swap_chain_set_length (chain, 3);

  onscreen_template = cogl_onscreen_template_new (chain);
  cogl_onscreen_template_set_pixel_format (onscreen_template,
                                           COGL_PIXEL_FORMAT_RGB565);

  display = cogl_display_new (NULL, onscreen_template);
  if (!cogl_display_setup (display, &error))
    g_error ("Failed to setup a CoglDisplay: %s", error->message);
2011-04-11 17:54:35 +01:00
..
driver cogl: consolidate _create_context_driver + _features_init 2011-04-11 15:26:25 +01:00
tesselator build: Do not build a noinst library for the tesselator 2010-09-12 19:25:47 +01:00
winsys rename winsys files to be more consistent 2011-04-11 17:54:35 +01:00
cogl2-clip-state.c framebuffer: expose experimental cogl_get_draw_framebuffer 2011-04-11 15:28:53 +01:00
cogl2-clip-state.h cogl-clip-state: Adapt to experimental cogl2 API. 2011-03-10 13:05:43 +00:00
cogl2-path.c framebuffer: expose experimental cogl_get_draw_framebuffer 2011-04-11 15:28:53 +01: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: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01:00
cogl-atlas.c cogl: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01:00
cogl-atlas.h cogl: Use GHookList instead of CoglCallbackList 2011-03-14 18:18:15 +00:00
cogl-attribute-private.h cogl: rename CoglVertexAttribute CoglAttribute 2011-01-21 16:24:14 +00:00
cogl-attribute.c framebuffer: expose experimental cogl_get_draw_framebuffer 2011-04-11 15:28:53 +01: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 Fix ISO C90 compiler warnings in Cogl 2011-02-15 12:40:11 +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: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01: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: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01: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: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01:00
cogl-buffer.h docs: Fixes for the Cogl API reference 2010-12-22 09:52:35 +00:00
cogl-clip-stack.c framebuffer: expose experimental cogl_get_draw_framebuffer 2011-04-11 15:28:53 +01: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-private.h cogl-clip-state: Adapt to experimental cogl2 API. 2011-03-10 13:05:43 +00:00
cogl-clip-state.c framebuffer: expose experimental cogl_get_draw_framebuffer 2011-04-11 15:28:53 +01:00
cogl-clip-state.h cogl-clip-state: Adapt to experimental cogl2 API. 2011-03-10 13:05:43 +00:00
cogl-clutter.c Add temporary cogl-clutter.h to aid splitting out Cogl 2011-04-11 17:54:35 +01:00
cogl-clutter.h Add temporary cogl-clutter.h to aid splitting out Cogl 2011-04-11 17:54:35 +01: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-private.h cogl: Adds experimental cogl_context_new() API 2011-04-11 15:26:20 +01:00
cogl-context.c Adds renderer,display,onscreen-template and swap-chain stubs 2011-04-11 17:54:35 +01:00
cogl-context.h cogl: Adds experimental cogl_context_new() API 2011-04-11 15:26:20 +01: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: Don't define _cogl_debug_flags when debugging disabled 2011-02-15 14:26:17 +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-display-private.h Adds renderer,display,onscreen-template and swap-chain stubs 2011-04-11 17:54:35 +01:00
cogl-display.c Adds renderer,display,onscreen-template and swap-chain stubs 2011-04-11 17:54:35 +01:00
cogl-display.h cogl: Adds experimental cogl_context_new() API 2011-04-11 15:26:20 +01: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: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +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 Add temporary cogl-clutter.h to aid splitting out Cogl 2011-04-11 17:54:35 +01:00
cogl-framebuffer.c Add temporary cogl-clutter.h to aid splitting out Cogl 2011-04-11 17:54:35 +01: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 cogl: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01:00
cogl-indices.h indices: Makes cogl_indices_get_array public 2010-11-19 13:27:30 +00:00
cogl-internal.h remove unused _cogl_features_init prototype 2011-04-11 15:26:25 +01: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 framebuffer: expose experimental cogl_get_draw_framebuffer 2011-04-11 15:28:53 +01:00
cogl-material-compat.c cogl: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01:00
cogl-material-compat.h docs: Fixes for the Cogl API reference 2010-12-22 09:52:35 +00:00
cogl-matrix-mesa.c viewport: consistently use floats for viewports 2011-03-07 13:26:19 +00:00
cogl-matrix-mesa.h viewport: consistently use floats for viewports 2011-03-07 13:26:19 +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 framebuffer: expose experimental cogl_get_draw_framebuffer 2011-04-11 15:28:53 +01:00
cogl-matrix-stack.h cogl: upload matrices with uniforms on GLES2 2010-12-13 17:29:13 +00:00
cogl-matrix.c util: optimize _clutter_util_fully_transform_vertices 2011-03-07 13:26:20 +00:00
cogl-matrix.h util: optimize _clutter_util_fully_transform_vertices 2011-03-07 13:26:20 +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-onscreen-template-private.h Adds renderer,display,onscreen-template and swap-chain stubs 2011-04-11 17:54:35 +01:00
cogl-onscreen-template.c Adds renderer,display,onscreen-template and swap-chain stubs 2011-04-11 17:54:35 +01:00
cogl-onscreen-template.h Adds renderer,display,onscreen-template and swap-chain stubs 2011-04-11 17:54:35 +01:00
cogl-path-private.h cogl-path: Optimise paths that are just a rectangle 2011-03-09 18:28:48 +00:00
cogl-path.c cogl: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01: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: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01: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: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01: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 cogl: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01: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: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01: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: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01: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: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01: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: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01:00
cogl-pipeline.c cogl: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01: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 cogl: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01: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 util: tune point_in_poly test for polys in screen coords 2011-03-07 13:26:19 +00:00
cogl-point-in-poly.c util: tune point_in_poly test for polys in screen coords 2011-03-07 13:26:19 +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 framebuffer: expose experimental cogl_get_draw_framebuffer 2011-04-11 15:28:53 +01:00
cogl-primitives.h Use begin/end macros in cogl-primitives.h 2010-03-25 09:33:26 +00:00
cogl-private.h Add temporary cogl-clutter.h to aid splitting out Cogl 2011-04-11 17:54:35 +01: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: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01: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-renderer-private.h Adds renderer,display,onscreen-template and swap-chain stubs 2011-04-11 17:54:35 +01:00
cogl-renderer.c Adds renderer,display,onscreen-template and swap-chain stubs 2011-04-11 17:54:35 +01:00
cogl-renderer.h Adds renderer,display,onscreen-template and swap-chain stubs 2011-04-11 17:54:35 +01:00
cogl-shader-boilerplate.h cogl-shader-boilerplate: Specify default precision earlier 2011-03-08 13:21:24 +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: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01: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 cogl: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01:00
cogl-swap-chain-private.h Adds renderer,display,onscreen-template and swap-chain stubs 2011-04-11 17:54:35 +01:00
cogl-swap-chain.c Adds renderer,display,onscreen-template and swap-chain stubs 2011-04-11 17:54:35 +01:00
cogl-swap-chain.h Adds renderer,display,onscreen-template and swap-chain stubs 2011-04-11 17:54:35 +01: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 cogl: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01:00
cogl-texture-2d.c framebuffer: expose experimental cogl_get_draw_framebuffer 2011-04-11 15:28:53 +01:00
cogl-texture-3d-private.h cogl: rename CoglMaterial -> CoglPipeline 2010-11-03 18:09:23 +00:00
cogl-texture-3d.c cogl: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01: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 cogl: rename cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01:00
cogl-texture.c framebuffer: expose experimental cogl_get_draw_framebuffer 2011-04-11 15:28:53 +01: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 cogl-context.h cogl-context-private.h 2011-04-11 15:18:12 +01:00
cogl-vertex-buffer.h docs: clarify cogl_vertex_buffer_adds docs 2011-02-09 19:12:12 +00:00
cogl.c framebuffer: expose experimental cogl_get_draw_framebuffer 2011-04-11 15:28:53 +01:00
cogl.h Add temporary cogl-clutter.h to aid splitting out Cogl 2011-04-11 17:54:35 +01: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 Adds renderer,display,onscreen-template and swap-chain stubs 2011-04-11 17:54:35 +01:00
stb_image.c Update stb_image.c 2010-03-03 17:02:51 +00:00