[Mesa-dev] [PATCH] vl/dri3: remove the wait before getting back buffer

Ernst Sjöstrand ernstp at gmail.com
Thu Mar 21 08:15:30 UTC 2019


What's the expected change in behavior? Does it fix any bugs?

Regards
//Ernst

Den ons 20 mars 2019 kl 16:42 skrev Liu, Leo <Leo.Liu at amd.com>:
>
> The wait here is unnecessary since we got a pool of back buffers,
> and the wait for swap buffer will happen before the present pixmap,
> at the same time the previous back buffer will be put back to pool
> for reuse after the check for PresentIdleNotify event
>
> Signed-off-by: Leo Liu <leo.liu at amd.com>
> ---
>  src/gallium/auxiliary/vl/vl_winsys_dri3.c | 18 +++---------------
>  1 file changed, 3 insertions(+), 15 deletions(-)
>
> diff --git a/src/gallium/auxiliary/vl/vl_winsys_dri3.c b/src/gallium/auxiliary/vl/vl_winsys_dri3.c
> index 152d28e59fc..1558d832555 100644
> --- a/src/gallium/auxiliary/vl/vl_winsys_dri3.c
> +++ b/src/gallium/auxiliary/vl/vl_winsys_dri3.c
> @@ -88,7 +88,6 @@ struct vl_dri3_screen
>     uint64_t send_sbc, recv_sbc;
>     int64_t last_ust, ns_frame, last_msc, next_msc;
>
> -   bool flushed;
>     bool is_different_gpu;
>  };
>
> @@ -570,11 +569,9 @@ vl_dri3_flush_frontbuffer(struct pipe_screen *screen,
>     if (!back)
>         return;
>
> -   if (scrn->flushed) {
> -      while (scrn->special_event && scrn->recv_sbc < scrn->send_sbc)
> -         if (!dri3_wait_present_events(scrn))
> -            return;
> -   }
> +   while (scrn->special_event && scrn->recv_sbc < scrn->send_sbc)
> +      if (!dri3_wait_present_events(scrn))
> +         return;
>
>     rectangle.x = 0;
>     rectangle.y = 0;
> @@ -610,8 +607,6 @@ vl_dri3_flush_frontbuffer(struct pipe_screen *screen,
>
>     xcb_flush(scrn->conn);
>
> -   scrn->flushed = true;
> -
>     return;
>  }
>
> @@ -626,13 +621,6 @@ vl_dri3_screen_texture_from_drawable(struct vl_screen *vscreen, void *drawable)
>     if (!dri3_set_drawable(scrn, (Drawable)drawable))
>        return NULL;
>
> -   if (scrn->flushed) {
> -      while (scrn->special_event && scrn->recv_sbc < scrn->send_sbc)
> -         if (!dri3_wait_present_events(scrn))
> -            return NULL;
> -   }
> -   scrn->flushed = false;
> -
>     buffer = (scrn->is_pixmap) ?
>              dri3_get_front_buffer(scrn) :
>              dri3_get_back_buffer(scrn);
> --
> 2.17.1
>
> _______________________________________________
> 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