V2: add missing FLUSH_CURRENT() to no_error path Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com> --- src/mesa/vbo/vbo_exec_array.c | 49 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 10 deletions(-)
diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c index 9452c65..a78edd3 100644 --- a/src/mesa/vbo/vbo_exec_array.c +++ b/src/mesa/vbo/vbo_exec_array.c @@ -616,22 +616,29 @@ vbo_exec_EvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) */ static void GLAPIENTRY vbo_exec_DrawArrays(GLenum mode, GLint start, GLsizei count) { GET_CURRENT_CONTEXT(ctx); if (MESA_VERBOSE & VERBOSE_DRAW) _mesa_debug(ctx, "glDrawArrays(%s, %d, %d)\n", _mesa_enum_to_string(mode), start, count); - if (!_mesa_validate_DrawArrays(ctx, mode, count)) - return; + if (_mesa_is_no_error_enabled(ctx)) { + FLUSH_CURRENT(ctx, 0); + + if (ctx->NewState) + _mesa_update_state(ctx); + } else { + if (!_mesa_validate_DrawArrays(ctx, mode, count)) + return; + } if (0) check_draw_arrays_data(ctx, start, count); vbo_draw_arrays(ctx, mode, start, count, 1, 0); if (0) print_draw_arrays(ctx, mode, start, count); } @@ -643,23 +650,31 @@ vbo_exec_DrawArrays(GLenum mode, GLint start, GLsizei count) static void GLAPIENTRY vbo_exec_DrawArraysInstanced(GLenum mode, GLint start, GLsizei count, GLsizei numInstances) { GET_CURRENT_CONTEXT(ctx); if (MESA_VERBOSE & VERBOSE_DRAW) _mesa_debug(ctx, "glDrawArraysInstanced(%s, %d, %d, %d)\n", _mesa_enum_to_string(mode), start, count, numInstances); - if (!_mesa_validate_DrawArraysInstanced(ctx, mode, start, count, - numInstances)) - return; + + if (_mesa_is_no_error_enabled(ctx)) { + FLUSH_CURRENT(ctx, 0); + + if (ctx->NewState) + _mesa_update_state(ctx); + } else { + if (!_mesa_validate_DrawArraysInstanced(ctx, mode, start, count, + numInstances)) + return; + } if (0) check_draw_arrays_data(ctx, start, count); vbo_draw_arrays(ctx, mode, start, count, numInstances, 0); if (0) print_draw_arrays(ctx, mode, start, count); } @@ -673,23 +688,30 @@ vbo_exec_DrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLuint baseInstance) { GET_CURRENT_CONTEXT(ctx); if (MESA_VERBOSE & VERBOSE_DRAW) _mesa_debug(ctx, "glDrawArraysInstancedBaseInstance(%s, %d, %d, %d, %d)\n", _mesa_enum_to_string(mode), first, count, numInstances, baseInstance); - if (!_mesa_validate_DrawArraysInstanced(ctx, mode, first, count, - numInstances)) - return; + if (_mesa_is_no_error_enabled(ctx)) { + FLUSH_CURRENT(ctx, 0); + + if (ctx->NewState) + _mesa_update_state(ctx); + } else { + if (!_mesa_validate_DrawArraysInstanced(ctx, mode, first, count, + numInstances)) + return; + } if (0) check_draw_arrays_data(ctx, first, count); vbo_draw_arrays(ctx, mode, first, count, numInstances, baseInstance); if (0) print_draw_arrays(ctx, mode, first, count); } @@ -1519,22 +1541,29 @@ vbo_validated_multidrawelementsindirect(struct gl_context *ctx, */ static void GLAPIENTRY vbo_exec_DrawArraysIndirect(GLenum mode, const GLvoid *indirect) { GET_CURRENT_CONTEXT(ctx); if (MESA_VERBOSE & VERBOSE_DRAW) _mesa_debug(ctx, "glDrawArraysIndirect(%s, %p)\n", _mesa_enum_to_string(mode), indirect); - if (!_mesa_validate_DrawArraysIndirect(ctx, mode, indirect)) - return; + if (_mesa_is_no_error_enabled(ctx)) { + FLUSH_CURRENT(ctx, 0); + + if (ctx->NewState) + _mesa_update_state(ctx); + } else { + if (!_mesa_validate_DrawArraysIndirect(ctx, mode, indirect)) + return; + } if (skip_validated_draw(ctx)) return; vbo_validated_drawarraysindirect(ctx, mode, indirect); } static void GLAPIENTRY vbo_exec_DrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect) -- 2.9.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev