[Mesa-dev] [PATCH] mesa: Generate correct error code in glDrawBuffers()

Ian Romanick idr at freedesktop.org
Tue Jan 28 10:36:34 PST 2014


On 01/27/2014 07:29 PM, Anuj Phogat wrote:
> OpenGL 3.3 spec expects GL_INVALID_OPERATION:
>  "For both the default framebuffer and framebuffer objects, the
>   constants FRONT, BACK, LEFT, RIGHT, and FRONT AND BACK are not
>   valid in the bufs array passed to DrawBuffers, and will result
>   in the error INVALID OPERATION."
> 
> But OpenGL 4.0 spec changed the error code to GL_INVALID_ENUM:
>  "For both the default framebuffer and framebuffer objects, the
>   constants FRONT, BACK, LEFT, RIGHT, and FRONT_AND_BACK are not
>   valid in the bufs array passed to DrawBuffers, and will result
>   in the error INVALID_ENUM."

At the very least the spec quotation in the code needs to be updated
with the 4.0 reference.  Right now the comment still says
INVALID_OPERATION.  The comment should also say, "Previous versions of
the spec say INVALID_OPERATION, but the conformance tests expect
INVALID_ENUM."

> This patch changes the behaviour to match OpenGL 4.0 spec
> Fixes Khronos OpenGL CTS draw_buffers_api.test.
> 
> Cc: mesa-stable at lists.freedesktop.org
> Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
> ---
>  src/mesa/main/buffers.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/mesa/main/buffers.c b/src/mesa/main/buffers.c
> index 2bdbf41..cdae7c5 100644
> --- a/src/mesa/main/buffers.c
> +++ b/src/mesa/main/buffers.c
> @@ -369,7 +369,7 @@ _mesa_DrawBuffers(GLsizei n, const GLenum *buffers)
>            *  table 4.4."
>            */
>           if (_mesa_bitcount(destMask[output]) > 1) {
> -            _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawBuffersARB(buffer)");
> +            _mesa_error(ctx, GL_INVALID_ENUM, "glDrawBuffersARB(buffer)");
>              return;
>           }
>  
> 



More information about the mesa-dev mailing list