- destMask[output] = draw_buffer_enum_to_bitmask(ctx, buffers[output]);
-
- /* From the OpenGL 3.0 specification, page 258:
- * "Each buffer listed in bufs must be one of the values from tables
- * 4.5 or 4.6. Otherwise, an INVALID_ENUM error is generated.
- */
- if (destMask[output] == BAD_MASK) {
- _mesa_error(ctx, GL_INVALID_ENUM, "%s(invalid buffer %s)",
- caller, _mesa_enum_to_string(buffers[output]));
- return;
- }
-
- /* From the OpenGL 4.5 specification, page 493 (page 515 of the PDF)
- * "An INVALID_ENUM error is generated if any value in bufs is FRONT,
- * LEFT, RIGHT, or FRONT_AND_BACK . This restriction applies to both
- * the default framebuffer and framebuffer objects, and exists because
- * these constants may themselves refer to multiple buffers, as shown
- * in table 17.4."
- *
- * And on page 492 (page 514 of the PDF):
- * "If the default framebuffer is affected, then each of the constants
- * must be one of the values listed in table 17.6 or the special value
- * BACK. When BACK is used, n must be 1 and color values are written
- * into the left buffer for single-buffered contexts, or into the back
- * left buffer for double-buffered contexts."
- *
- * Note "special value BACK". GL_BACK also refers to multiple buffers,
- * but it is consider a special case here. This is a change on 4.5. For
- * OpenGL 4.x we check that behaviour. For any previous version we keep
- * considering it wrong (as INVALID_ENUM).
- */
- if (_mesa_bitcount(destMask[output]) > 1) {
- if (_mesa_is_winsys_fbo(fb) && ctx->Version >= 40 &&
- buffers[output] == GL_BACK) {
+ if (!no_error) {
+ /* From the OpenGL 4.5 specification, page 493 (page 515 of the PDF)
+ * "An INVALID_ENUM error is generated if any value in bufs is FRONT,
+ * LEFT, RIGHT, or FRONT_AND_BACK . This restriction applies to both
+ * the default framebuffer and framebuffer objects, and exists because
+ * these constants may themselves refer to multiple buffers, as shown
+ * in table 17.4."
+ *
+ * From the OpenGL 4.5 specification, page 492 (page 514 of the PDF):
+ * "If the default framebuffer is affected, then each of the constants
+ * must be one of the values listed in table 17.6 or the special value
+ * BACK. When BACK is used, n must be 1 and color values are written
+ * into the left buffer for single-buffered contexts, or into the back
+ * left buffer for double-buffered contexts."
+ *
+ * Note "special value BACK". GL_BACK also refers to multiple buffers,
+ * but it is consider a special case here. This is a change on 4.5.
+ * For OpenGL 4.x we check that behaviour. For any previous version we
+ * keep considering it wrong (as INVALID_ENUM).
+ */
+ if (buffers[output] == GL_BACK &&
+ _mesa_is_winsys_fbo(fb) &&
+ _mesa_is_desktop_gl(ctx) &&
+ ctx->Version >= 40) {