aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mapi/glapi/gen/gl_marshal.py9
-rw-r--r--src/mesa/main/glthread.c14
-rw-r--r--src/mesa/main/glthread.h2
-rw-r--r--src/mesa/main/marshal.c3
4 files changed, 20 insertions, 8 deletions
diff --git a/src/mapi/glapi/gen/gl_marshal.py b/src/mapi/glapi/gen/gl_marshal.py
index c12a086942b..5f4787cc3cc 100644
--- a/src/mapi/glapi/gen/gl_marshal.py
+++ b/src/mapi/glapi/gen/gl_marshal.py
@@ -87,7 +87,6 @@ class PrintCode(gl_XML.gl_print_base):
out('return {0};'.format(call))
def print_sync_dispatch(self, func):
- out('debug_print_sync_fallback("{0}");'.format(func.name))
self.print_sync_call(func)
def print_sync_body(self, func):
@@ -97,8 +96,7 @@ class PrintCode(gl_XML.gl_print_base):
out('{')
with indent():
out('GET_CURRENT_CONTEXT(ctx);')
- out('_mesa_glthread_finish(ctx);')
- out('debug_print_sync("{0}");'.format(func.name))
+ out('_mesa_glthread_finish_before(ctx, "{0}");'.format(func.name))
self.print_sync_call(func)
out('}')
out('')
@@ -247,8 +245,7 @@ class PrintCode(gl_XML.gl_print_base):
if func.marshal_fail:
out('if ({0}) {{'.format(func.marshal_fail))
with indent():
- out('_mesa_glthread_finish(ctx);')
- out('_mesa_glthread_restore_dispatch(ctx, __func__);')
+ out('_mesa_glthread_disable(ctx, "{0}");'.format(func.name))
self.print_sync_dispatch(func)
out('return;')
out('}')
@@ -264,7 +261,7 @@ class PrintCode(gl_XML.gl_print_base):
if need_fallback_sync:
out('fallback_to_sync:')
with indent():
- out('_mesa_glthread_finish(ctx);')
+ out('_mesa_glthread_finish_before(ctx, "{0}");'.format(func.name))
self.print_sync_dispatch(func)
else:
with indent():
diff --git a/src/mesa/main/glthread.c b/src/mesa/main/glthread.c
index eae468e211c..af4eb15cb4d 100644
--- a/src/mesa/main/glthread.c
+++ b/src/mesa/main/glthread.c
@@ -149,6 +149,13 @@ _mesa_glthread_restore_dispatch(struct gl_context *ctx, const char *func)
}
void
+_mesa_glthread_disable(struct gl_context *ctx, const char *func)
+{
+ _mesa_glthread_finish_before(ctx, func);
+ _mesa_glthread_restore_dispatch(ctx, func);
+}
+
+void
_mesa_glthread_flush_batch(struct gl_context *ctx)
{
struct glthread_state *glthread = ctx->GLThread;
@@ -227,3 +234,10 @@ _mesa_glthread_finish(struct gl_context *ctx)
if (synced)
p_atomic_inc(&glthread->stats.num_syncs);
}
+
+void
+_mesa_glthread_finish_before(struct gl_context *ctx, const char *func)
+{
+ _mesa_glthread_finish(ctx);
+ debug_print_sync_fallback(func);
+}
diff --git a/src/mesa/main/glthread.h b/src/mesa/main/glthread.h
index 3d1c3ef1983..021d5213084 100644
--- a/src/mesa/main/glthread.h
+++ b/src/mesa/main/glthread.h
@@ -100,7 +100,9 @@ void _mesa_glthread_init(struct gl_context *ctx);
void _mesa_glthread_destroy(struct gl_context *ctx);
void _mesa_glthread_restore_dispatch(struct gl_context *ctx, const char *func);
+void _mesa_glthread_disable(struct gl_context *ctx, const char *func);
void _mesa_glthread_flush_batch(struct gl_context *ctx);
void _mesa_glthread_finish(struct gl_context *ctx);
+void _mesa_glthread_finish_before(struct gl_context *ctx, const char *func);
#endif /* _GLTHREAD_H*/
diff --git a/src/mesa/main/marshal.c b/src/mesa/main/marshal.c
index b2428e5e7cd..e0d423a4aae 100644
--- a/src/mesa/main/marshal.c
+++ b/src/mesa/main/marshal.c
@@ -87,8 +87,7 @@ _mesa_marshal_Enable(GLenum cap)
debug_print_marshal("Enable");
if (cap == GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB) {
- _mesa_glthread_finish(ctx);
- _mesa_glthread_restore_dispatch(ctx, "Enable(DEBUG_OUTPUT_SYNCHRONOUS)");
+ _mesa_glthread_disable(ctx, "Enable(DEBUG_OUTPUT_SYNCHRONOUS)");
} else {
cmd = _mesa_glthread_allocate_command(ctx, DISPATCH_CMD_Enable,
sizeof(*cmd));