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

drmmode_crtc_scanout_update does the equivalent of a scanout update,
so no need to do it again. This might also avoid issues if there's a
pending scanout update at this point.

(Ported from amdgpu commit 4e7a24ac5a64e402146953ec5850d13c05742116)

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

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 134b0f72b..34c88c8e6 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -781,11 +781,17 @@ drmmode_crtc_scanout_update(xf86CrtcPtr crtc, 
DisplayModePtr mode,
                *fb = 
radeon_pixmap_get_fb(drmmode_crtc->scanout[scanout_id].pixmap);
                *x = *y = 0;
 
-               radeon_scanout_do_update(crtc, scanout_id,
-                                        screen->GetWindowPixmap(screen->root),
-                                        extents);
-               RegionEmpty(DamageRegion(drmmode_crtc->scanout_damage));
-               radeon_finish(scrn, drmmode_crtc->scanout[scanout_id].bo);
+               if (radeon_scanout_do_update(crtc, scanout_id,
+                                            
screen->GetWindowPixmap(screen->root),
+                                            extents)) {
+                       RegionEmpty(DamageRegion(drmmode_crtc->scanout_damage));
+                       radeon_glamor_finish(scrn);
+
+                       if (!drmmode_crtc->flip_pending) {
+                               radeon_drm_abort_entry(drmmode_crtc->
+                                                      scanout_update_pending);
+                       }
+               }
        }
 }
 
-- 
2.20.1

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

Reply via email to