summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2017-07-18 15:51:58 +0200
committerSamuel Pitoiset <[email protected]>2017-07-31 13:53:39 +0200
commitf60b16ef277578fddf9f73ece7d0771b5ed8a168 (patch)
tree32229d5acd3289722518004032d1e8d8b0a304eb
parenteb6b2997203906c90faf8b471dec7bf2bc24ec1d (diff)
mesa: add KHR_no_error support to glMultiDraw*Indirect*()
Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Timothy Arceri <[email protected]>
-rw-r--r--src/mesa/vbo/vbo_exec_array.c56
1 files changed, 42 insertions, 14 deletions
diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c
index dfb8402014a..98abf47bd3a 100644
--- a/src/mesa/vbo/vbo_exec_array.c
+++ b/src/mesa/vbo/vbo_exec_array.c
@@ -1714,9 +1714,16 @@ vbo_exec_MultiDrawArraysIndirect(GLenum mode, const GLvoid *indirect,
if (stride == 0)
stride = 4 * sizeof(GLuint); /* sizeof(DrawArraysIndirectCommand) */
- if (!_mesa_validate_MultiDrawArraysIndirect(ctx, mode, indirect,
- primcount, stride))
- return;
+ if (_mesa_is_no_error_enabled(ctx)) {
+ FLUSH_CURRENT(ctx, 0);
+
+ if (ctx->NewState)
+ _mesa_update_state(ctx);
+ } else {
+ if (!_mesa_validate_MultiDrawArraysIndirect(ctx, mode, indirect,
+ primcount, stride))
+ return;
+ }
if (skip_validated_draw(ctx))
return;
@@ -1742,9 +1749,16 @@ vbo_exec_MultiDrawElementsIndirect(GLenum mode, GLenum type,
if (stride == 0)
stride = 5 * sizeof(GLuint); /* sizeof(DrawElementsIndirectCommand) */
- if (!_mesa_validate_MultiDrawElementsIndirect(ctx, mode, type, indirect,
- primcount, stride))
- return;
+ if (_mesa_is_no_error_enabled(ctx)) {
+ FLUSH_CURRENT(ctx, 0);
+
+ if (ctx->NewState)
+ _mesa_update_state(ctx);
+ } else {
+ if (!_mesa_validate_MultiDrawElementsIndirect(ctx, mode, type, indirect,
+ primcount, stride))
+ return;
+ }
if (skip_validated_draw(ctx))
return;
@@ -1832,10 +1846,17 @@ vbo_exec_MultiDrawArraysIndirectCount(GLenum mode, GLintptr indirect,
if (stride == 0)
stride = 4 * sizeof(GLuint); /* sizeof(DrawArraysIndirectCommand) */
- if (!_mesa_validate_MultiDrawArraysIndirectCount(ctx, mode,
- indirect, drawcount,
- maxdrawcount, stride))
- return;
+ if (_mesa_is_no_error_enabled(ctx)) {
+ FLUSH_CURRENT(ctx, 0);
+
+ if (ctx->NewState)
+ _mesa_update_state(ctx);
+ } else {
+ if (!_mesa_validate_MultiDrawArraysIndirectCount(ctx, mode,
+ indirect, drawcount,
+ maxdrawcount, stride))
+ return;
+ }
if (skip_validated_draw(ctx))
return;
@@ -1863,10 +1884,17 @@ vbo_exec_MultiDrawElementsIndirectCount(GLenum mode, GLenum type,
if (stride == 0)
stride = 5 * sizeof(GLuint); /* sizeof(DrawElementsIndirectCommand) */
- if (!_mesa_validate_MultiDrawElementsIndirectCount(ctx, mode, type,
- indirect, drawcount,
- maxdrawcount, stride))
- return;
+ if (_mesa_is_no_error_enabled(ctx)) {
+ FLUSH_CURRENT(ctx, 0);
+
+ if (ctx->NewState)
+ _mesa_update_state(ctx);
+ } else {
+ if (!_mesa_validate_MultiDrawElementsIndirectCount(ctx, mode, type,
+ indirect, drawcount,
+ maxdrawcount, stride))
+ return;
+ }
if (skip_validated_draw(ctx))
return;