[PATCH xf86-video-amdgpu 2/2] Wait for pending flips in drmmode_output_set_tear_free
Michel Dänzer
michel at daenzer.net
Thu Apr 26 15:58:50 UTC 2018
From: Michel Dänzer <michel.daenzer at amd.com>
This prevents a nested call to drmHandleEvent, which would hang.
Fixes hangs when disabling TearFree on a CRTC while a DRI3 client is
page flipping.
Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
---
src/drmmode_display.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index cf1e5d1f1..4fac645b9 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -1750,6 +1750,15 @@ drmmode_output_set_tear_free(AMDGPUEntPtr pAMDGPUEnt,
drmmode_output->tear_free = tear_free;
if (crtc) {
+ drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
+
+ /* Wait for pending flips before drmmode_set_mode_major calls
+ * drmmode_crtc_update_tear_free, to prevent a nested
+ * drmHandleEvent call, which would hang
+ */
+ drmmode_crtc_wait_pending_event(drmmode_crtc,
+ pAMDGPUEnt->fd,
+ drmmode_crtc->flip_pending);
drmmode_set_mode_major(crtc, &crtc->mode, crtc->rotation,
crtc->x, crtc->y);
}
--
2.17.0
More information about the amd-gfx
mailing list