[Mesa-dev] [PATCH] mesa: Fix error code for GetFramebufferAttachmentParameter in ES 3.0+.
Ian Romanick
idr at freedesktop.org
Tue Mar 8 01:03:21 UTC 2016
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
On 03/07/2016 04:55 PM, Kenneth Graunke wrote:
> The ES 3.0+ specifications contain the exact same text as the OpenGL
> specification, which says that we should return GL_INVALID_OPERATION.
>
> ES 2.0 contains different text saying we should return GL_INVALID_ENUM.
>
> Previously, Mesa chose the error code based on API (GL vs. ES).
> This patch makes ES 3.0+ follow the GL behavior. ES 2 remains as is.
>
> Fixes dEQP-GLES3.functional.fbo.api.attachment_query_empty_fbo.
> However, breaks the dEQP-GLES2 variant of the same test for drivers
> which silently promote to ES 3.0. This can be worked around by
> exporting MESA_GLES_VERSION_OVERRIDE=2.0, but is a bug in dEQP-GLES2.
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
> src/mesa/main/fbobject.c | 18 ++++++++++++++++--
> 1 file changed, 16 insertions(+), 2 deletions(-)
>
> diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
> index feab86c..d490918 100644
> --- a/src/mesa/main/fbobject.c
> +++ b/src/mesa/main/fbobject.c
> @@ -3580,8 +3580,22 @@ _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 code for an attachment type of GL_NONE differs between APIs.
> + *
> + * From the ES 2.0.25 specification, page 127:
> + * "If the value of FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE is NONE, then
> + * querying any other pname will generate INVALID_ENUM."
> + *
> + * From the OpenGL 3.0 specification, page 337, or identically,
> + * the OpenGL ES 3.0.4 specification, page 240:
> + *
> + * "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."
> + */
> + err = ctx->API == API_OPENGLES2 && ctx->Version < 30 ?
> + GL_INVALID_ENUM : GL_INVALID_OPERATION;
>
> 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