diff options
author | Jordan Justen <[email protected]> | 2015-10-13 15:04:54 -0700 |
---|---|---|
committer | Jordan Justen <[email protected]> | 2015-11-02 15:25:37 -0800 |
commit | 44c399f20af49607c799326ad4dd0f74c5214d4c (patch) | |
tree | a03dbb2eadb2ca067625f132dccc99ae5c6544c2 | |
parent | 0b19f651958c3888588190c8c8a9e701173a2aa2 (diff) |
mesa: Update DispatchComputeIndirect errors for indirect parameter
There is some discrepancy between the return values for some error
cases for the DispatchComputeIndirect call in the ARB_compute_shader
specification. Regarding the indirect parameter, in one place the
extension spec lists that the error returned for invalid values should
be INVALID_OPERATION, while later it specifies INVALID_VALUE.
The OpenGL 4.3 and OpenGLES 3.1 specifications appear to be consistent
in requiring the INVALID_VALUE error return in this case.
Here we update the code to match the main specifications, and update
the citations use the main specification rather than the extension
specification.
v2:
* Updates based on review from Iago
Signed-off-by: Jordan Justen <[email protected]>
Cc: Iago Toral Quiroga <[email protected]>
Cc: Marta Lofstedt <[email protected]>
Reviewed-by: Marta Lofstedt <[email protected]>
-rw-r--r-- | src/mesa/main/api_validate.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c index 1f729e8a293..a3ee8c00948 100644 --- a/src/mesa/main/api_validate.c +++ b/src/mesa/main/api_validate.c @@ -960,20 +960,19 @@ valid_dispatch_indirect(struct gl_context *ctx, if (!check_valid_to_compute(ctx, name)) return GL_FALSE; - /* From the ARB_compute_shader specification: + /* From the OpenGL 4.3 Core Specification, Chapter 19, Compute Shaders: * - * "An INVALID_OPERATION error is generated [...] if <indirect> is less - * than zero or not a multiple of the size, in basic machine units, of - * uint." + * "An INVALID_VALUE error is generated if indirect is negative or is not a + * multiple of four." */ if ((GLintptr)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; } if ((GLintptr)indirect < 0) { - _mesa_error(ctx, GL_INVALID_OPERATION, + _mesa_error(ctx, GL_INVALID_VALUE, "%s(indirect is less than zero)", name); return GL_FALSE; } |