From 7dcdd519385aaa4fddfa1368fbbbc89c408befe3 Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Sat, 15 Oct 2022 21:33:14 +1100 Subject: [PATCH] glthread: leave dlist dispatch in place for Begin/End If Begin/End are called from a display list make sure to leave the dlist.c's dispatch table in place just like the non-glthread code does. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7335 Fixes: 7f1cac7ba682 ("mesa/glthread: enable immediate mode") Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/mesa/vbo/vbo_exec_api.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c index 5a8ea8ab795..7daa00fdd34 100644 --- a/src/mesa/vbo/vbo_exec_api.c +++ b/src/mesa/vbo/vbo_exec_api.c @@ -855,7 +855,8 @@ _mesa_Begin(GLenum mode) * leave dlist.c's dispatch table in place. */ if (ctx->GLThread.enabled) { - ctx->CurrentServerDispatch = ctx->Exec; + if (ctx->CurrentServerDispatch == ctx->OutsideBeginEnd) + ctx->CurrentServerDispatch = ctx->Exec; } else if (ctx->CurrentClientDispatch == ctx->OutsideBeginEnd) { ctx->CurrentClientDispatch = ctx->CurrentServerDispatch = ctx->Exec; _glapi_set_dispatch(ctx->CurrentClientDispatch); @@ -914,7 +915,10 @@ _mesa_End(void) ctx->Exec = ctx->OutsideBeginEnd; if (ctx->GLThread.enabled) { - ctx->CurrentServerDispatch = ctx->Exec; + if (ctx->CurrentServerDispatch == ctx->BeginEnd || + ctx->CurrentServerDispatch == ctx->HWSelectModeBeginEnd) { + ctx->CurrentServerDispatch = ctx->Exec; + } } else if (ctx->CurrentClientDispatch == ctx->BeginEnd || ctx->CurrentClientDispatch == ctx->HWSelectModeBeginEnd) { ctx->CurrentClientDispatch = ctx->CurrentServerDispatch = ctx->Exec;