[Mesa-dev] [Mesa-stable] [PATCH] mesa: fix error type for GetFramebufferAttachmentParameteriv

Ian Romanick idr at freedesktop.org
Tue Oct 27 09:42:46 PDT 2015


On 10/27/2015 12:11 AM, Tapani Pälli wrote:
> Fixes following failing dEQP test:
>    dEQP-GLES3.functional.fbo.api.attachment_query_empty_fbo
> 
> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92649
> Cc: "11.0" <mesa-stable at lists.freedesktop.org>
> ---
>  src/mesa/main/fbobject.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
> index fe6bdc2..d91fb4a 100644
> --- a/src/mesa/main/fbobject.c
> +++ b/src/mesa/main/fbobject.c
> @@ -3540,8 +3540,9 @@ _mesa_get_framebuffer_attachment_parameter(struct gl_context *ctx,
>     const struct gl_renderbuffer_attachment *att;
>     GLenum err;
>  
> -   /* The error differs in GL and GLES. */
> -   err = _mesa_is_desktop_gl(ctx) ? GL_INVALID_OPERATION : GL_INVALID_ENUM;
> +   /* The error differs between GL/GLES3 and GLES 2.0. */

Could we get quotations from the various specs here? That would have
saved me some time. The commit log for 000896c0 as the GLES2 reference.
For GLES 3.0,

Section 6.1.13 (Framebuffer Object Queries) of the OpenGL ES 3.0.4 spec
says:

"If the value of FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE is NONE, no
framebuffer is bound to target. In this case querying pname
FRAMEBUFFER_ATTACHMENT_OBJECT_NAME will return zero, and all other
queries will generate an INVALID_OPERATION error."

The GLES2 reference in the commit above is Section 6.1.3 (Enumerated
Queries).

I feel a bit conflicted about this change.  Section F.2 (Differences in
Runtime Behavior) of the OpenGL ES 3.0.4 spec lists three subtle (but
possibly important) differences between ES2 and ES3.  This list does
*not* include changed errors.  I don't have any specific recollection
about these changes, but this causes me to believe that these are
corrects to ES2.

What do the CTS and dEQP do if you...

- Always generate GL_INVALID_OPERATION.

- Only return an ES2 context.

If all the GLES2 conformance tests and the dEQP-GLES2 tests still pass,
I would be inclined to just always do GL_INVALID_OPERATION.

> +   err = _mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx) ?
> +      GL_INVALID_OPERATION : GL_INVALID_ENUM;
>  
>     if (_mesa_is_winsys_fbo(buffer)) {
>        /* Page 126 (page 136 of the PDF) of the OpenGL ES 2.0.25 spec
> 



More information about the mesa-dev mailing list