1*4882a593SmuzhiyunFrom d0b587a185c0324792cf17c54b6d62eb4da4d400 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com> 3*4882a593SmuzhiyunDate: Tue, 5 Jul 2022 13:51:11 +0800 4*4882a593SmuzhiyunSubject: [PATCH 10/10] ecore_drm2: Set output's crtc atomic prop as well 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> 7*4882a593Smuzhiyun--- 8*4882a593Smuzhiyun src/lib/ecore_drm2/ecore_drm2_fb.c | 7 +++++++ 9*4882a593Smuzhiyun src/lib/ecore_drm2/ecore_drm2_outputs.c | 8 +++++++- 10*4882a593Smuzhiyun 2 files changed, 14 insertions(+), 1 deletion(-) 11*4882a593Smuzhiyun 12*4882a593Smuzhiyundiff --git a/src/lib/ecore_drm2/ecore_drm2_fb.c b/src/lib/ecore_drm2/ecore_drm2_fb.c 13*4882a593Smuzhiyunindex 38c8287..57bc154 100644 14*4882a593Smuzhiyun--- a/src/lib/ecore_drm2/ecore_drm2_fb.c 15*4882a593Smuzhiyun+++ b/src/lib/ecore_drm2/ecore_drm2_fb.c 16*4882a593Smuzhiyun@@ -336,6 +336,7 @@ _fb_atomic_flip_test(Ecore_Drm2_Output *output) 17*4882a593Smuzhiyun int ret = 0; 18*4882a593Smuzhiyun Eina_List *l; 19*4882a593Smuzhiyun Ecore_Drm2_Crtc_State *cstate; 20*4882a593Smuzhiyun+ Ecore_Drm2_Connector_State *cnstate; 21*4882a593Smuzhiyun Ecore_Drm2_Plane_State *pstate; 22*4882a593Smuzhiyun Ecore_Drm2_Plane *plane; 23*4882a593Smuzhiyun drmModeAtomicReq *req = NULL; 24*4882a593Smuzhiyun@@ -350,6 +351,7 @@ _fb_atomic_flip_test(Ecore_Drm2_Output *output) 25*4882a593Smuzhiyun sym_drmModeAtomicSetCursor(req, 0); 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun cstate = output->crtc_state; 28*4882a593Smuzhiyun+ cnstate = output->conn_state; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun ret = 31*4882a593Smuzhiyun sym_drmModeAtomicAddProperty(req, cstate->obj_id, cstate->mode.id, 32*4882a593Smuzhiyun@@ -361,6 +363,11 @@ _fb_atomic_flip_test(Ecore_Drm2_Output *output) 33*4882a593Smuzhiyun cstate->active.value); 34*4882a593Smuzhiyun if (ret < 0) goto err; 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun+ ret = 37*4882a593Smuzhiyun+ sym_drmModeAtomicAddProperty(req, cnstate->obj_id, cnstate->crtc.id, 38*4882a593Smuzhiyun+ cnstate->crtc.value); 39*4882a593Smuzhiyun+ if (ret < 0) goto err; 40*4882a593Smuzhiyun+ 41*4882a593Smuzhiyun if (cstate->background.id) 42*4882a593Smuzhiyun { 43*4882a593Smuzhiyun ret = 44*4882a593Smuzhiyundiff --git a/src/lib/ecore_drm2/ecore_drm2_outputs.c b/src/lib/ecore_drm2/ecore_drm2_outputs.c 45*4882a593Smuzhiyunindex 2140079..ba6b139 100644 46*4882a593Smuzhiyun--- a/src/lib/ecore_drm2/ecore_drm2_outputs.c 47*4882a593Smuzhiyun+++ b/src/lib/ecore_drm2/ecore_drm2_outputs.c 48*4882a593Smuzhiyun@@ -1265,10 +1265,12 @@ static Eina_Bool 49*4882a593Smuzhiyun _output_mode_atomic_set(Ecore_Drm2_Output *output, Ecore_Drm2_Output_Mode *mode) 50*4882a593Smuzhiyun { 51*4882a593Smuzhiyun Ecore_Drm2_Crtc_State *cstate; 52*4882a593Smuzhiyun+ Ecore_Drm2_Connector_State *cnstate; 53*4882a593Smuzhiyun drmModeAtomicReq *req = NULL; 54*4882a593Smuzhiyun int ret = 0; 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun cstate = output->crtc_state; 57*4882a593Smuzhiyun+ cnstate = output->conn_state; 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun if (mode) 60*4882a593Smuzhiyun { 61*4882a593Smuzhiyun@@ -1294,9 +1296,13 @@ _output_mode_atomic_set(Ecore_Drm2_Output *output, Ecore_Drm2_Output_Mode *mode) 62*4882a593Smuzhiyun { 63*4882a593Smuzhiyun cstate->active.value = 1; 64*4882a593Smuzhiyun cstate->mode.value = mode->id; 65*4882a593Smuzhiyun+ cnstate->crtc.value = cstate->obj_id; 66*4882a593Smuzhiyun } 67*4882a593Smuzhiyun else 68*4882a593Smuzhiyun- cstate->active.value = 0; 69*4882a593Smuzhiyun+ { 70*4882a593Smuzhiyun+ cstate->active.value = 0; 71*4882a593Smuzhiyun+ cnstate->crtc.value = 0; 72*4882a593Smuzhiyun+ } 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun ret = sym_drmModeAtomicAddProperty(req, cstate->obj_id, cstate->mode.id, 75*4882a593Smuzhiyun cstate->mode.value); 76*4882a593Smuzhiyun-- 77*4882a593Smuzhiyun2.20.1 78*4882a593Smuzhiyun 79