diff options
author | Michel Dänzer <michel.daenzer@amd.com> | 2018-12-21 12:47:18 +0100 |
---|---|---|
committer | Michel Dänzer <michel@daenzer.net> | 2018-12-28 12:07:24 +0100 |
commit | ce7db51020d32f17e442338bfd305220feb51630 (patch) | |
tree | 3e58ce126bb20ce5bd13c503f5ed95d15f4066e8 | |
parent | 21d65e5b78c8889e363aee8596cd0b0f942fee46 (diff) |
Cancel pending scanout update in drmmode_crtc_scanout_update
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)
-rw-r--r-- | src/drmmode_display.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/drmmode_display.c b/src/drmmode_display.c index 134b0f72..34c88c8e 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); + } + } } } |