[Mesa-dev] [PATCH] mesa: Check that draw buffers are valid for glDrawBuffers on GLES3

2015-02-19 Thread Eduardo Lima Mitev
Section 4.2 (Whole Framebuffer Operations) of the OpenGL 3.0 specification
says:

"Each buffer listed in bufs must be BACK, NONE, or one of the values from
 table 4.3 (NONE, COLOR_ATTACHMENTi)".

Fixes 1 dEQP test:
* dEQP-GLES3.functional.negative_api.buffer.draw_buffers
---
 src/mesa/main/buffers.c | 14 ++
 1 file changed, 14 insertions(+)

diff --git a/src/mesa/main/buffers.c b/src/mesa/main/buffers.c
index a2d02d5..e5076e9 100644
--- a/src/mesa/main/buffers.c
+++ b/src/mesa/main/buffers.c
@@ -336,6 +336,20 @@ _mesa_DrawBuffers(GLsizei n, const GLenum *buffers)
 
/* complicated error checking... */
for (output = 0; output < n; output++) {
+  /* Section 4.2 (Whole Framebuffer Operations) of the OpenGL 3.0
+   * specification says:
+   *
+   * "Each buffer listed in bufs must be BACK, NONE, or one of the 
values
+   *  from table 4.3 (NONE, COLOR_ATTACHMENTi)"
+   */
+  if (_mesa_is_gles3(ctx) && buffers[output] != GL_NONE &&
+  buffers[output] != GL_BACK &&
+  (buffers[output] < GL_COLOR_ATTACHMENT0 ||
+   buffers[output] >= GL_COLOR_ATTACHMENT0 + 
ctx->Const.MaxColorAttachments)) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glDrawBuffers(buffer)");
+ return;
+  }
+
   if (buffers[output] == GL_NONE) {
  destMask[output] = 0x0;
   }
-- 
2.1.3

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] mesa: Check that draw buffers are valid for glDrawBuffers on GLES3

2015-02-19 Thread Matt Turner
Reviewed-by: Matt Turner 
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev