disp: msm: sde: remove fb's attached to a drm_file in preclose

This change avoids upstream drm issuing drm_atomic_commit in
drm_fb_release which is leading to artifacts on screen or
atomic_check failures due to atomically unstaging each fb
from plane_state and committing remaining planes on hardware.

 a) This patch moves the state operations for setting crtc to
    connector state to a helper api.
 b) This patch clears any dim_layers present in the crtc_state
    as part of null commit.
 c) This patch removes any framebuffers attached to a drm_file
    in msm_preclose whose refcount is not managed by composer kill
    inadvertently and issues null flush to hardware in such cases.
 d) This patch handles msm_preclose as part of msm_release
    operation since legacy feature is not supported
    for msm_driver.

Change-Id: Ib2068d74d4b23b73b7c84544858c9f6bb6adfa67
Signed-off-by: Jayaprakash Madisetty <jmadiset@codeaurora.org>
Signed-off-by: Samantha Tran <samtran@codeaurora.org>
Cette révision appartient à :
Jayaprakash Madisetty
2020-12-21 16:48:50 +05:30
révisé par Samantha Tran
Parent 2df01bf3aa
révision 0e3d422520
4 fichiers modifiés avec 111 ajouts et 45 suppressions

Voir le fichier

@@ -1022,4 +1022,10 @@ void sde_crtc_reset_sw_state(struct drm_crtc *crtc);
*/
void sde_crtc_disable_cp_features(struct drm_crtc *crtc);
/*
* _sde_crtc_clear_dim_layers_v1 - clear all dim layer settings
* @cstate: Pointer to drm crtc state
*/
void _sde_crtc_clear_dim_layers_v1(struct drm_crtc_state *state);
#endif /* _SDE_CRTC_H_ */