1From 62f978297547f0e632ce4f74df0d703c60785dc8 Mon Sep 17 00:00:00 2001 2From: Jeffy Chen <jeffy.chen@rock-chips.com> 3Date: Wed, 6 Jan 2021 10:13:40 +0800 4Subject: [PATCH 38/79] backend-drm: Fix disabling output error when using 5 atomic 6 7Disabling output in async mode is not allow by drm driver's 8drm_atomic_crtc_check() for "requesting event but off" error. 9 10Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> 11--- 12 libweston/backend-drm/kms.c | 10 ++++++++-- 13 1 file changed, 8 insertions(+), 2 deletions(-) 14 15diff --git a/libweston/backend-drm/kms.c b/libweston/backend-drm/kms.c 16index cf37773..4443741 100644 17--- a/libweston/backend-drm/kms.c 18+++ b/libweston/backend-drm/kms.c 19@@ -1137,6 +1137,14 @@ drm_pending_state_apply_atomic(struct drm_pending_state *pending_state, 20 if (!req) 21 return -1; 22 23+ wl_list_for_each(output_state, &pending_state->output_list, link) { 24+ if (output_state->output->virtual) 25+ continue; 26+ if (output_state->dpms == WESTON_DPMS_OFF && 27+ mode == DRM_STATE_APPLY_ASYNC) 28+ mode = DRM_STATE_APPLY_SYNC; 29+ } 30+ 31 switch (mode) { 32 case DRM_STATE_APPLY_SYNC: 33 flags = 0; 34@@ -1238,8 +1246,6 @@ drm_pending_state_apply_atomic(struct drm_pending_state *pending_state, 35 wl_list_for_each(output_state, &pending_state->output_list, link) { 36 if (output_state->output->virtual) 37 continue; 38- if (mode == DRM_STATE_APPLY_SYNC) 39- assert(output_state->dpms == WESTON_DPMS_OFF); 40 ret |= drm_output_apply_state_atomic(output_state, req, &flags); 41 } 42 43-- 442.20.1 45 46