mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 00:49:04 +02:00
mesa: Draw Indirect return wrong error code on unalinged
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@linux.intel.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
parent
4565b6f4fb
commit
2c91e08656
1 changed files with 6 additions and 4 deletions
|
|
@ -702,12 +702,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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue