Mesa (master): mesa: Generate correct error code in glDrawBuffers()

Anuj Phogat aphogat at kemper.freedesktop.org
Wed Jan 29 00:02:17 UTC 2014


Module: Mesa
Branch: master
Commit: 33034755583edfb7c5b773b8e38a9dfa8d317821
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=33034755583edfb7c5b773b8e38a9dfa8d317821

Author: Anuj Phogat <anuj.phogat at gmail.com>
Date:   Mon Jan 27 17:23:32 2014 -0800

mesa: Generate correct error code in glDrawBuffers()

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-commit mailing list