glthread: sync in glFlush for multiple contexts

See the code comment.

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5382>
This commit is contained in:
Marek Olšák 2020-06-08 08:46:10 -04:00 committed by Marge Bot
parent 90c34aed1d
commit d76e8131ac

View File

@ -2390,8 +2390,14 @@
<glx sop="108" handcode="true"/>
</function>
<!-- Shared contexts have to wait for glthread to finish execution after glFlush,
so that other contexts can see the effect of previous GL calls when glFlush returns.
This is harmless if the contexts run on different threads, because we only stall
1 thread that's asynchronous anyway. It's worse when the contexts run on the same
thread, but that's not a good use of multiple contexts.
-->
<function name="Flush" es1="1.0" es2="2.0"
marshal_call_after="_mesa_glthread_flush_batch(ctx);">
marshal_call_after="_mesa_glthread_flush_batch(ctx); if (ctx->Shared->RefCount > 1) _mesa_glthread_finish(ctx);">
<glx sop="142" handcode="true"/>
</function>