[Mesa-dev] [PATCH 1/4] mesa: Draw indirect is not allowed if the default VAO is bound.

Marta Lofstedt marta.lofstedt at linux.intel.com
Tue Oct 20 07:19:37 PDT 2015


From: Marta Lofstedt <marta.lofstedt at intel.com>

>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>
---
 src/mesa/main/api_validate.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c
index a46c194..c5628f5 100644
--- a/src/mesa/main/api_validate.c
+++ b/src/mesa/main/api_validate.c
@@ -698,6 +698,19 @@ 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 (_mesa_is_gles31(ctx) && (ctx->Array.VAO == ctx->Array.DefaultVAO)) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                  "%s(The default VAO is bound)", name);
+      return GL_FALSE;
+   }
+
    if (!_mesa_valid_prim_mode(ctx, mode, name))
       return GL_FALSE;
 
-- 
2.1.4



More information about the mesa-dev mailing list