<div dir="ltr">Ping<br></div><br><div class="gmail_quote"><div dir="ltr">On Sat, Nov 10, 2018 at 1:29 AM Marek Olšák <<a href="mailto:maraeo@gmail.com">maraeo@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">From: Marek Olšák <<a href="mailto:marek.olsak@amd.com" target="_blank">marek.olsak@amd.com</a>><br>
<br>
If you insert printf there, you'll know why glthread was disabled.<br>
---<br>
 src/mapi/glapi/gen/gl_marshal.py | 2 +-<br>
 src/mesa/main/glthread.c         | 4 ++--<br>
 src/mesa/main/glthread.h         | 2 +-<br>
 src/mesa/main/marshal.c          | 2 +-<br>
 4 files changed, 5 insertions(+), 5 deletions(-)<br>
<br>
diff --git a/src/mapi/glapi/gen/gl_marshal.py b/src/mapi/glapi/gen/gl_marshal.py<br>
index 5b35357ac54..4fd2bc2a5b9 100644<br>
--- a/src/mapi/glapi/gen/gl_marshal.py<br>
+++ b/src/mapi/glapi/gen/gl_marshal.py<br>
@@ -242,21 +242,21 @@ class PrintCode(gl_XML.gl_print_base):<br>
             out('{0} *cmd;'.format(struct))<br>
<br>
             out('debug_print_marshal("{0}");'.format(<a href="http://func.name" rel="noreferrer" target="_blank">func.name</a>))<br>
<br>
             need_fallback_sync = self.validate_count_or_fallback(func)<br>
<br>
             if func.marshal_fail:<br>
                 out('if ({0}) {{'.format(func.marshal_fail))<br>
                 with indent():<br>
                     out('_mesa_glthread_finish(ctx);')<br>
-                    out('_mesa_glthread_restore_dispatch(ctx);')<br>
+                    out('_mesa_glthread_restore_dispatch(ctx, __func__);')<br>
                     self.print_sync_dispatch(func)<br>
                     out('return;')<br>
                 out('}')<br>
<br>
             out('if (cmd_size <= MARSHAL_MAX_CMD_SIZE) {')<br>
             with indent():<br>
                 self.print_async_dispatch(func)<br>
                 out('return;')<br>
             out('}')<br>
<br>
diff --git a/src/mesa/main/glthread.c b/src/mesa/main/glthread.c<br>
index 18a83bb9be4..8610d1ef933 100644<br>
--- a/src/mesa/main/glthread.c<br>
+++ b/src/mesa/main/glthread.c<br>
@@ -114,25 +114,25 @@ _mesa_glthread_destroy(struct gl_context *ctx)<br>
<br>
    _mesa_glthread_finish(ctx);<br>
    util_queue_destroy(&glthread->queue);<br>
<br>
    for (unsigned i = 0; i < MARSHAL_MAX_BATCHES; i++)<br>
       util_queue_fence_destroy(&glthread->batches[i].fence);<br>
<br>
    free(glthread);<br>
    ctx->GLThread = NULL;<br>
<br>
-   _mesa_glthread_restore_dispatch(ctx);<br>
+   _mesa_glthread_restore_dispatch(ctx, "destroy");<br>
 }<br>
<br>
 void<br>
-_mesa_glthread_restore_dispatch(struct gl_context *ctx)<br>
+_mesa_glthread_restore_dispatch(struct gl_context *ctx, const char *func)<br>
 {<br>
    /* Remove ourselves from the dispatch table except if another ctx/thread<br>
     * already installed a new dispatch table.<br>
     *<br>
     * Typically glxMakeCurrent will bind a new context (install new table) then<br>
     * old context might be deleted.<br>
     */<br>
    if (_glapi_get_dispatch() == ctx->MarshalExec) {<br>
        ctx->CurrentClientDispatch = ctx->CurrentServerDispatch;<br>
        _glapi_set_dispatch(ctx->CurrentClientDispatch);<br>
diff --git a/src/mesa/main/glthread.h b/src/mesa/main/glthread.h<br>
index 8cd5d022674..59cb95feb4a 100644<br>
--- a/src/mesa/main/glthread.h<br>
+++ b/src/mesa/main/glthread.h<br>
@@ -92,15 +92,15 @@ struct glthread_state<br>
    /**<br>
     * Tracks on the main thread side whether the current element array (index<br>
     * buffer) binding is in a VBO.<br>
     */<br>
    bool element_array_is_vbo;<br>
 };<br>
<br>
 void _mesa_glthread_init(struct gl_context *ctx);<br>
 void _mesa_glthread_destroy(struct gl_context *ctx);<br>
<br>
-void _mesa_glthread_restore_dispatch(struct gl_context *ctx);<br>
+void _mesa_glthread_restore_dispatch(struct gl_context *ctx, const char *func);<br>
 void _mesa_glthread_flush_batch(struct gl_context *ctx);<br>
 void _mesa_glthread_finish(struct gl_context *ctx);<br>
<br>
 #endif /* _GLTHREAD_H*/<br>
diff --git a/src/mesa/main/marshal.c b/src/mesa/main/marshal.c<br>
index 8f8e8c78ed2..1827585ef0a 100644<br>
--- a/src/mesa/main/marshal.c<br>
+++ b/src/mesa/main/marshal.c<br>
@@ -82,21 +82,21 @@ _mesa_unmarshal_Enable(struct gl_context *ctx,<br>
<br>
 void GLAPIENTRY<br>
 _mesa_marshal_Enable(GLenum cap)<br>
 {<br>
    GET_CURRENT_CONTEXT(ctx);<br>
    struct marshal_cmd_Enable *cmd;<br>
    debug_print_marshal("Enable");<br>
<br>
    if (cap == GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB) {<br>
       _mesa_glthread_finish(ctx);<br>
-      _mesa_glthread_restore_dispatch(ctx);<br>
+      _mesa_glthread_restore_dispatch(ctx, "Enable(DEBUG_OUTPUT_SYNCHRONOUS)");<br>
    } else {<br>
       cmd = _mesa_glthread_allocate_command(ctx, DISPATCH_CMD_Enable,<br>
                                             sizeof(*cmd));<br>
       cmd->cap = cap;<br>
       _mesa_post_marshal_hook(ctx);<br>
       return;<br>
    }<br>
<br>
    _mesa_glthread_finish(ctx);<br>
    debug_print_sync_fallback("Enable");<br>
-- <br>
2.17.1<br>
<br>
</blockquote></div>