Add _primitive_draw to replace _framebuffer_draw_primitive

When splitting out the CoglPath api we saw that we would be left with
inconsistent drawing apis if the drawing apis in core Cogl were lumped
into the cogl_framebuffer_ api considering other Cogl sub-libraries or
that others will want to create higher level drawing apis outside of
Cogl but can't use the same namespace.

So that we can aim for a more consistent style this adds a
cogl_primitive_draw() api, comparable to cogl_path_fill() or
cogl_pango_show_layout() that's intended to replace
cogl_framebuffer_draw_primitive()

Note: the attribute and rectangle drawing apis are still in the
cogl_framebuffer_ namespace and this might potentially change but in
these cases there is no single object representing the thing being drawn
so it seems a more reasonable they they live in the framebuffer
namespace for now.

Note: the cogl_framebuffer_draw_primitive() api isn't removed by this
patch so it can more conveniently be cherry picked to the 1.16 branch so
we can mark it deprecated for a short while. Even though it's marked as
experimental api we know that there are people using the api so we'd
like to give them a chance to switch to the new api.

Reviewed-by: Neil Roberts <neil@linux.intel.com>

(cherry picked from commit 418912b93ff81a47f9b38114d05335ab76277c48)

Conflicts:
	cogl-pango/cogl-pango-display-list.c
	cogl/Makefile.am
	cogl/cogl-framebuffer.c
	cogl/cogl-pipeline-layer-state.h
	cogl/cogl2-path.c
	cogl/driver/gl/cogl-clip-stack-gl.c
This commit is contained in:
Robert Bragg
2013-07-09 23:47:29 +01:00
committed by Neil Roberts
parent 5580baeffb
commit e9f721216e
30 changed files with 133 additions and 100 deletions

View File

@@ -32,6 +32,11 @@
#include <windows.h>
#endif /* COGL_HAS_WIN32_SUPPORT */
/* We forward declare the CoglFramebuffer type here to avoid some circular
* dependency issues with the following headers.
*/
typedef struct _CoglFramebuffer CoglFramebuffer;
#ifdef COGL_ENABLE_EXPERIMENTAL_2_0_API
#include <cogl/cogl2-path.h>
#else
@@ -87,8 +92,6 @@ COGL_BEGIN_DECLS
* configuration.
*/
typedef struct _CoglFramebuffer CoglFramebuffer;
#ifdef COGL_ENABLE_EXPERIMENTAL_API
#define COGL_FRAMEBUFFER(X) ((CoglFramebuffer *)(X))
@@ -1387,9 +1390,8 @@ cogl_framebuffer_draw_rectangle (CoglFramebuffer *framebuffer,
* This is a high level drawing api that can handle any kind of
* #CoglMetaTexture texture such as #CoglTexture2DSliced textures
* which may internally be comprised of multiple low-level textures.
* This is unlike low-level drawing apis such as
* cogl_framebuffer_draw_primitive() or
* cogl_framebuffer_draw_attributes() which only support low level
* This is unlike low-level drawing apis such as cogl_primitive_draw()
* or cogl_framebuffer_draw_attributes() which only support low level
* texture types that are directly supported by GPUs such as
* #CoglTexture2D.
*
@@ -1454,10 +1456,9 @@ cogl_framebuffer_draw_textured_rectangle (CoglFramebuffer *framebuffer,
* #CoglMetaTexture texture for the first layer such as
* #CoglTexture2DSliced textures which may internally be comprised of
* multiple low-level textures. This is unlike low-level drawing apis
* such as cogl_framebuffer_draw_primitive() or
* cogl_framebuffer_draw_attributes() which only support low level
* texture types that are directly supported by GPUs such as
* #CoglTexture2D.
* such as cogl_primitive_draw() or cogl_framebuffer_draw_attributes()
* which only support low level texture types that are directly
* supported by GPUs such as #CoglTexture2D.
*
* <note>This api can not currently handle multiple high-level meta
* texture layers. The first layer may be a high level meta texture
@@ -1562,9 +1563,8 @@ cogl_framebuffer_draw_rectangles (CoglFramebuffer *framebuffer,
* This is a high level drawing api that can handle any kind of
* #CoglMetaTexture texture such as #CoglTexture2DSliced textures
* which may internally be comprised of multiple low-level textures.
* This is unlike low-level drawing apis such as
* cogl_framebuffer_draw_primitive() or
* cogl_framebuffer_draw_attributes() which only support low level
* This is unlike low-level drawing apis such as cogl_primitive_draw()
* or cogl_framebuffer_draw_attributes() which only support low level
* texture types that are directly supported by GPUs such as
* #CoglTexture2D.
*