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

Marek Olšák maraeo at gmail.com
Fri Nov 10 14:43:46 UTC 2017


For the series:

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Thu, Nov 9, 2017 at 2:45 PM, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
> 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
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list