<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>