[Mesa-dev] [PATCH 05/17] mesa: Fix GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE for default framebuffer.

Ian Romanick idr at freedesktop.org
Wed Jul 29 12:42:24 PDT 2015


This patch is

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

I think this patch could also be tagged for the 10.6.x series.

On 07/29/2015 07:01 AM, Samuel Iglesias Gonsalvez wrote:
> From: Iago Toral Quiroga <itoral at igalia.com>
> 
> From section 9.2. Binding and Managing Framebuffer Objects:
> 
> "Upon successful return from Get*FramebufferAttachmentParameteriv, if
> pname is FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, then params will contain
> one of NONE, FRAMEBUFFER_DEFAULT, TEXTURE, or RENDERBUFFER, identifying
> the type of object which contains the attached image."
> 
> And then it clarifies further:
> 
> "If the value of FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE is NONE, then
> either no framebuffer is bound to target; or the default framebuffer is
> bound, attachment is DEPTH or STENCIL, and the number of depth or stencil
> bits, respectively, is zero"
> 
> Currently, if the default framebuffer is bound, we always return
> GL_FRAMEBUFFER_DEFAULT for FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, but
> according to the spec, when GL_DEPTH or GL_STENCIL attachments are
> the ones being queried, we should return GL_NONE if they don't exist.
> 
> Fixes the following dEQP test:
> dEQP-GLES3.functional.state_query.fbo.framebuffer_attachment_x_size_initial
> ---
>  src/mesa/main/fbobject.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
> index cc342c2..84321e4 100644
> --- a/src/mesa/main/fbobject.c
> +++ b/src/mesa/main/fbobject.c
> @@ -3584,7 +3584,16 @@ _mesa_get_framebuffer_attachment_parameter(struct gl_context *ctx,
>  
>     switch (pname) {
>     case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT:
> -      *params = _mesa_is_winsys_fbo(buffer)
> +      /* From the OpenGL spec, 9.2. Binding and Managing Framebuffer Objects:
> +       *
> +       * "If the value of FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE is NONE, then
> +       *  either no framebuffer is bound to target; or the default framebuffer
> +       *  is bound, attachment is DEPTH or STENCIL, and the number of depth or
> +       *  stencil bits, respectively, is zero."
> +       */
> +      *params = (_mesa_is_winsys_fbo(buffer) &&
> +                 ((attachment != GL_DEPTH && attachment != GL_STENCIL) ||
> +                  (att->Type != GL_NONE)))
>           ? GL_FRAMEBUFFER_DEFAULT : att->Type;
>        return;
>     case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT:
> 



More information about the mesa-dev mailing list