[Mesa-dev] [PATCH 3/4] st/mesa: use asynchronous flushes in st_finish

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


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

With threaded gallium, the driver may currently be running in another
thread. In that case, we will execute all remaining commands in that
thread instead of syncing, which should be better for cache locality.
---
 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 c8452d0e6f7..14bfd5a4684 100644
--- a/src/mesa/state_tracker/st_cb_flush.c
+++ b/src/mesa/state_tracker/st_cb_flush.c
@@ -56,21 +56,21 @@ void st_flush(struct st_context *st,
 }
 
 
 /**
  * Flush, and wait for completion.
  */
 void st_finish( struct st_context *st )
 {
    struct pipe_fence_handle *fence = NULL;
 
-   st_flush(st, &fence, 0);
+   st_flush(st, &fence, PIPE_FLUSH_ASYNC | PIPE_FLUSH_HINT_FINISH);
 
    if(fence) {
       st->pipe->screen->fence_finish(st->pipe->screen, NULL, fence,
                                      PIPE_TIMEOUT_INFINITE);
       st->pipe->screen->fence_reference(st->pipe->screen, &fence, NULL);
    }
 
    st_manager_flush_swapbuffers();
 }
 
-- 
2.11.0



More information about the mesa-dev mailing list