mesa: fix assertion in _mesa_drawbuffers()
authorBrian Paul <brianp@vmware.com>
Fri, 8 Aug 2014 21:01:50 +0000 (15:01 -0600)
committerBrian Paul <brianp@vmware.com>
Mon, 11 Aug 2014 15:44:51 +0000 (09:44 -0600)
Fixes failed assertion when _mesa_update_draw_buffers() was called
with GL_DRAW_BUFFER == GL_FRONT_AND_BACK.  The piglit gl30basic hit
this.

Cc: "10.2" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/main/buffers.c

index b13a7af65a6918f84f90a469d8a7375da40bd5b2..6b4fac9f58d5858265b7982c20ff2df54ba3219a 100644 (file)
@@ -494,10 +494,11 @@ _mesa_drawbuffers(struct gl_context *ctx, GLuint n, const GLenum *buffers,
    }
 
    /*
-    * If n==1, destMask[0] may have up to four bits set.
+    * destMask[0] may have up to four bits set
+    * (ex: glDrawBuffer(GL_FRONT_AND_BACK)).
     * Otherwise, destMask[x] can only have one bit set.
     */
-   if (n == 1) {
+   if (_mesa_bitcount(destMask[0]) > 1) {
       GLuint count = 0, destMask0 = destMask[0];
       while (destMask0) {
          GLint bufIndex = ffs(destMask0) - 1;