From: Michel Dänzer <michel.daen...@amd.com>

We don't need to wait for a non-TearFree scanout update before scanning
out from the screen pixmap or before flipping, as the scanout update
won't be visible anyway. Instead, just abort it.

Signed-off-by: Michel Dänzer <michel.daen...@amd.com>
---
 src/drmmode_display.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 2d1540d7b..dcfc9937e 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -953,8 +953,8 @@ done:
                if (drmmode_crtc->scanout[scanout_id].pixmap &&
                    fb != amdgpu_pixmap_get_fb(drmmode_crtc->
                                               scanout[scanout_id].pixmap)) {
-                       drmmode_crtc_wait_pending_event(drmmode_crtc, 
pAMDGPUEnt->fd,
-                                                       
drmmode_crtc->scanout_update_pending);
+                       
amdgpu_drm_abort_entry(drmmode_crtc->scanout_update_pending);
+                       drmmode_crtc->scanout_update_pending = 0;
                        drmmode_crtc_scanout_free(drmmode_crtc);
                } else if (!drmmode_crtc->tear_free) {
                        drmmode_crtc_scanout_destroy(drmmode,
@@ -3083,8 +3083,12 @@ Bool amdgpu_do_pageflip(ScrnInfoPtr scrn, ClientPtr 
client,
                        amdgpu_scanout_do_update(crtc, scanout_id, new_front,
                                                 extents);
 
-                       drmmode_crtc_wait_pending_event(drmmode_crtc, 
pAMDGPUEnt->fd,
-                                                       
drmmode_crtc->scanout_update_pending);
+                       if (drmmode_crtc->scanout_update_pending) {
+                               drmmode_crtc_wait_pending_event(drmmode_crtc, 
pAMDGPUEnt->fd,
+                                                               
drmmode_crtc->flip_pending);
+                               
amdgpu_drm_abort_entry(drmmode_crtc->scanout_update_pending);
+                               drmmode_crtc->scanout_update_pending = 0;
+                       }
                }
 
                if (crtc == ref_crtc) {
-- 
2.17.0

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to