vl/dri3: remove the wait before getting back buffer
authorLeo Liu <leo.liu@amd.com>
Tue, 19 Mar 2019 17:37:39 +0000 (13:37 -0400)
committerLeo Liu <leo.liu@amd.com>
Mon, 25 Mar 2019 16:20:31 +0000 (12:20 -0400)
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@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
src/gallium/auxiliary/vl/vl_winsys_dri3.c

index 152d28e59fc0b13730aec54edf26f761812e880e..1558d832555c7e74d7a5b3719b99c6fd7f626a65 100644 (file)
@@ -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);