[Mesa-dev] [PATCH v2] mesa: Draw Indirect return wrong error code on unalinged
Marta Lofstedt
marta.lofstedt at linux.intel.com
Mon Oct 26 03:22:27 PDT 2015
From: Marta Lofstedt <marta.lofstedt at intel.com>
>From OpenGL 4.4 specification, section 10.4 and
Open GL Es 3.1 section 10.5:
"An INVALID_VALUE error is generated if indirect is not a multiple
of the size, in basic machine units, of uint."
However, the current code follow the ARB_draw_indirect:
https://www.opengl.org/registry/specs/ARB/draw_indirect.txt
"INVALID_OPERATION is generated by DrawArraysIndirect and
DrawElementsIndirect if commands source data beyond the end
of a buffer object or if <indirect> is not word aligned."
V2: After discussions on the list, it was suggested to
only keep the INVALID_VALUE error.
Signed-off-by: Marta Lofstedt <marta.lofstedt at linux.intel.com>
---
src/mesa/main/api_validate.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c
index 40a2f43..19b6a73 100644
--- a/src/mesa/main/api_validate.c
+++ b/src/mesa/main/api_validate.c
@@ -714,12 +714,14 @@ valid_draw_indirect(struct gl_context *ctx,
return GL_FALSE;
- /* From the ARB_draw_indirect specification:
- * "An INVALID_OPERATION error is generated [...] if <indirect> is no
- * word aligned."
+ /* From OpenGL version 4.4. section 10.5
+ * and OpenGL ES 3.1, section 10.6:
+ *
+ * "An INVALID_VALUE error is generated if indirect is not a
+ * multiple of the size, in basic machine units, of uint."
*/
if ((GLsizeiptr)indirect & (sizeof(GLuint) - 1)) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
+ _mesa_error(ctx, GL_INVALID_VALUE,
"%s(indirect is not aligned)", name);
return GL_FALSE;
}
--
2.1.4
More information about the mesa-dev
mailing list