[Mesa-dev] [Mesa-stable] [PATCH V2] mesa: Generate correct error code in glDrawBuffers()
Ian Romanick
idr at freedesktop.org
Tue Jan 28 14:04:46 PST 2014
On 01/28/2014 02:52 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."
>
> This patch changes the behaviour to match OpenGL 4.0 spec
> Fixes Khronos OpenGL CTS draw_buffers_api.test.
>
> V2: Update the comment in code.
>
> Cc: mesa-stable at lists.freedesktop.org
> Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
> ---
> src/mesa/main/buffers.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/src/mesa/main/buffers.c b/src/mesa/main/buffers.c
> index 2bdbf41..6cbce9d 100644
> --- a/src/mesa/main/buffers.c
> +++ b/src/mesa/main/buffers.c
> @@ -360,16 +360,18 @@ _mesa_DrawBuffers(GLsizei n, const GLenum *buffers)
> return;
> }
>
> - /* From the OpenGL 3.0 specification, page 259:
> + /* From the OpenGL 4.0 specification, page 256:
> * "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. This restriction is because these
> + * the error INVALID_ENUM. This restriction is because these
> * constants may themselves refer to multiple buffers, as shown in
> * table 4.4."
> + * Previous versions of the OpenGL specification say INVALID_OPERATION,
> + * but the Khronos conformance tests expect INVALID_ENUM.
> */
> 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