summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEduardo Lima Mitev <[email protected]>2015-02-20 09:32:42 +0100
committerSamuel Iglesias Gonsalvez <[email protected]>2015-02-20 09:35:12 +0100
commit097b933b55eea6181678b34ede94bbc588dc94ff (patch)
tree56c8eb7963da6408778ce70faa27e199c834883e
parentfe1e89a026fb85cc7dffbd3f967687186796631e (diff)
mesa: Check that draw buffers are valid for glDrawBuffers on GLES3
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 Reviewed-by: Matt Turner <[email protected]>
-rw-r--r--src/mesa/main/buffers.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/mesa/main/buffers.c b/src/mesa/main/buffers.c
index a2d02d56154..e5076e9bbde 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;
}