[Cogl] [PATCH 3/6] Add a public cogl_framebuffer_get_depth_bits() function
Robert Bragg
robert at sixbynine.org
Wed Jan 16 06:05:02 PST 2013
This looks good to land to me:
Reviewed-by: Robert Bragg <robert at linux.intel.com>
thanks,
- Robert
On Fri, Dec 14, 2012 at 11:43 AM, Neil Roberts <neil at linux.intel.com> wrote:
> Cogl publicly exposes the depth buffer state so we might as well have
> a function to query the number of depth bits of a framebuffer.
> ---
> cogl/cogl-framebuffer-private.h | 1 +
> cogl/cogl-framebuffer.c | 11 +++++++++++
> cogl/cogl-framebuffer.h | 14 ++++++++++++++
> cogl/driver/gl/cogl-framebuffer-gl.c | 8 ++++++--
> doc/reference/cogl2/cogl2-sections.txt | 3 ++-
> 5 files changed, 34 insertions(+), 3 deletions(-)
>
> diff --git a/cogl/cogl-framebuffer-private.h b/cogl/cogl-framebuffer-private.h
> index 25f183b..6acf42c 100644
> --- a/cogl/cogl-framebuffer-private.h
> +++ b/cogl/cogl-framebuffer-private.h
> @@ -111,6 +111,7 @@ typedef struct
> int blue;
> int green;
> int alpha;
> + int depth;
> } CoglFramebufferBits;
>
> struct _CoglFramebuffer
> diff --git a/cogl/cogl-framebuffer.c b/cogl/cogl-framebuffer.c
> index 06dd388..771a7bf 100644
> --- a/cogl/cogl-framebuffer.c
> +++ b/cogl/cogl-framebuffer.c
> @@ -887,6 +887,17 @@ cogl_framebuffer_get_alpha_bits (CoglFramebuffer *framebuffer)
> return bits.alpha;
> }
>
> +int
> +cogl_framebuffer_get_depth_bits (CoglFramebuffer *framebuffer)
> +{
> + CoglContext *ctx = framebuffer->context;
> + CoglFramebufferBits bits;
> +
> + ctx->driver_vtable->framebuffer_query_bits (framebuffer, &bits);
> +
> + return bits.depth;
> +}
> +
> CoglColorMask
> cogl_framebuffer_get_color_mask (CoglFramebuffer *framebuffer)
> {
> diff --git a/cogl/cogl-framebuffer.h b/cogl/cogl-framebuffer.h
> index 9dbea41..310d248 100644
> --- a/cogl/cogl-framebuffer.h
> +++ b/cogl/cogl-framebuffer.h
> @@ -711,6 +711,20 @@ int
> cogl_framebuffer_get_alpha_bits (CoglFramebuffer *framebuffer);
>
> /**
> + * cogl_framebuffer_get_depth_bits:
> + * @framebuffer: a pointer to a #CoglFramebuffer
> + *
> + * Retrieves the number of depth bits of @framebuffer
> + *
> + * Return value: the number of bits
> + *
> + * Since: 2.0
> + * Stability: unstable
> + */
> +int
> +cogl_framebuffer_get_depth_bits (CoglFramebuffer *framebuffer);
> +
> +/**
> * cogl_framebuffer_get_dither_enabled:
> * @framebuffer: a pointer to a #CoglFramebuffer
> *
> diff --git a/cogl/driver/gl/cogl-framebuffer-gl.c b/cogl/driver/gl/cogl-framebuffer-gl.c
> index e622d91..4ecc011 100644
> --- a/cogl/driver/gl/cogl-framebuffer-gl.c
> +++ b/cogl/driver/gl/cogl-framebuffer-gl.c
> @@ -919,6 +919,8 @@ _cogl_framebuffer_init_bits (CoglFramebuffer *framebuffer)
> offsetof (CoglFramebufferBits, blue) },
> { GL_COLOR_ATTACHMENT0, GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE,
> offsetof (CoglFramebufferBits, alpha) },
> + { GL_DEPTH_ATTACHMENT, GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE,
> + offsetof (CoglFramebufferBits, depth) },
> };
> int i;
>
> @@ -939,11 +941,12 @@ _cogl_framebuffer_init_bits (CoglFramebuffer *framebuffer)
> GE( ctx, glGetIntegerv (GL_GREEN_BITS, &framebuffer->bits.green) );
> GE( ctx, glGetIntegerv (GL_BLUE_BITS, &framebuffer->bits.blue) );
> GE( ctx, glGetIntegerv (GL_ALPHA_BITS, &framebuffer->bits.alpha) );
> + GE( ctx, glGetIntegerv (GL_DEPTH_BITS, &framebuffer->bits.depth) );
> }
>
>
> COGL_NOTE (OFFSCREEN,
> - "RGBA Bits for framebuffer[%p, %s]: %d, %d, %d, %d",
> + "RGBA/D Bits for framebuffer[%p, %s]: %d, %d, %d, %d, %d",
> framebuffer,
> framebuffer->type == COGL_FRAMEBUFFER_TYPE_OFFSCREEN
> ? "offscreen"
> @@ -951,7 +954,8 @@ _cogl_framebuffer_init_bits (CoglFramebuffer *framebuffer)
> framebuffer->bits.red,
> framebuffer->bits.blue,
> framebuffer->bits.green,
> - framebuffer->bits.alpha);
> + framebuffer->bits.alpha,
> + framebuffer->bits.depth);
>
> framebuffer->dirty_bitmasks = FALSE;
> }
> diff --git a/doc/reference/cogl2/cogl2-sections.txt b/doc/reference/cogl2/cogl2-sections.txt
> index eea15d6..4767f3d 100644
> --- a/doc/reference/cogl2/cogl2-sections.txt
> +++ b/doc/reference/cogl2/cogl2-sections.txt
> @@ -353,7 +353,8 @@ cogl_framebuffer_get_color_format
> cogl_framebuffer_get_red_bits
> cogl_framebuffer_get_green_bits
> cogl_framebuffer_get_blue_bits
> -cogl_framebuffer_get_blue_bits
> +cogl_framebuffer_get_alpha_bits
> +cogl_framebuffer_get_depth_bits
> cogl_framebuffer_get_color_mask
> cogl_framebuffer_set_color_mask
> cogl_framebuffer_get_samples_per_pixel
> --
> 1.7.11.3.g3c3efa5
>
> _______________________________________________
> Cogl mailing list
> Cogl at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/cogl
More information about the Cogl
mailing list