Mesa (master): mesa: Draw indirect is not allowed if the default VAO is bound.

Marta Löfstedt marta at kemper.freedesktop.org
Tue Oct 27 11:13:35 UTC 2015


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

Author: Marta Lofstedt <marta.lofstedt at intel.com>
Date:   Mon Oct 26 10:58:37 2015 +0100

mesa: Draw indirect is not allowed if the default VAO is bound.

>From OpenGL ES 3.1 specification, section 10.5:
"DrawArraysIndirect requires that all data sourced for the
command, including the DrawArraysIndirectCommand
structure,  be in buffer objects,  and may not be called when
the default vertex array object is bound."

Signed-off-by: Marta Lofstedt <marta.lofstedt at linux.intel.com>
Reviewed-by: Tapani Pälli <tapani.palli at intel.com>

---

 src/mesa/main/api_validate.c |   12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c
index e936d62..06efe02 100644
--- a/src/mesa/main/api_validate.c
+++ b/src/mesa/main/api_validate.c
@@ -698,6 +698,18 @@ valid_draw_indirect(struct gl_context *ctx,
 {
    const GLsizeiptr end = (GLsizeiptr)indirect + size;
 
+   /* OpenGL ES 3.1 spec. section 10.5:
+    *
+    *      "DrawArraysIndirect requires that all data sourced for the
+    *      command, including the DrawArraysIndirectCommand
+    *      structure,  be in buffer objects,  and may not be called when
+    *      the default vertex array object is bound."
+    */
+   if (ctx->Array.VAO == ctx->Array.DefaultVAO) {
+      _mesa_error(ctx, GL_INVALID_OPERATION, "(no VAO bound)");
+      return GL_FALSE;
+   }
+
    if (!_mesa_valid_prim_mode(ctx, mode, name))
       return GL_FALSE;
 




More information about the mesa-commit mailing list