[Mesa-dev] [PATCH 4/4] st/mesa: use asynchronous flushes for glFlush

Nicolai Hähnle nhaehnle at gmail.com
Thu Nov 9 13:45:59 UTC 2017


From: Nicolai Hähnle <nicolai.haehnle at amd.com>

Having the gallium driver thread flush in the background should be
sufficient for glFlush semantics.

Various end-of-frame flushes (from st_context_flush and st/dri) still
use a synchronous flush. We should eventually be able to transition
those to asynchronous flushes as well by passing fences explicitly
via the X protocol.
---
 src/mesa/state_tracker/st_cb_flush.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/mesa/state_tracker/st_cb_flush.c b/src/mesa/state_tracker/st_cb_flush.c
index 14bfd5a4684..5f4e2ac3cc1 100644
--- a/src/mesa/state_tracker/st_cb_flush.c
+++ b/src/mesa/state_tracker/st_cb_flush.c
@@ -81,21 +81,21 @@ void st_finish( struct st_context *st )
  */
 static void st_glFlush(struct gl_context *ctx)
 {
    struct st_context *st = st_context(ctx);
 
    /* Don't call st_finish() here.  It is not the state tracker's
     * responsibilty to inject sleeps in the hope of avoiding buffer
     * synchronization issues.  Calling finish() here will just hide
     * problems that need to be fixed elsewhere.
     */
-   st_flush(st, NULL, 0);
+   st_flush(st, NULL, PIPE_FLUSH_ASYNC);
 
    st_manager_flush_frontbuffer(st);
 }
 
 
 /**
  * Called via ctx->Driver.Finish()
  */
 static void st_glFinish(struct gl_context *ctx)
 {
-- 
2.11.0



More information about the mesa-dev mailing list