Mesa (master): vl/dri3: remove the wait before getting back buffer

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Mar 25 16:36:50 UTC 2019


Module: Mesa
Branch: master
Commit: 382401aab75d7f4962705868fdf9099d14043472
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=382401aab75d7f4962705868fdf9099d14043472

Author: Leo Liu <leo.liu at amd.com>
Date:   Tue Mar 19 13:37:39 2019 -0400

vl/dri3: remove the wait before getting back buffer

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>
Reviewed-by: Michel Dänzer <michel.daenzer 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);




More information about the mesa-commit mailing list