diff options
author | Yichi Chen <yichichen@google.com> | 2022-05-19 16:38:51 +0800 |
---|---|---|
committer | Yichi Chen <yichichen@google.com> | 2022-05-20 02:48:22 +0800 |
commit | b9d8b8f33e6b6e1636c08fa83ae484213a7a0db9 (patch) | |
tree | c05a7ec4bab910922bb598bc6f219cad8b6e2c42 | |
parent | 376501f4c1c900a53a12258794916a1c4ffcee1a (diff) | |
download | display-android-gs-raviole-5.10-android13.tar.gz |
rcd: update dqe state when rcd state is changedandroid-t-beta-4_r0.6android-t-beta-4_r0.5android-t-beta-4_r0.4android-t-beta-3.3_r0.4android-t-beta-3.2_r0.4android-13.0.0_r0.5android-13.0.0_r0.44android-13.0.0_r0.43android-13.0.0_r0.4android-13.0.0_r0.20android-13.0.0_r0.19android-13.0.0_r0.15android-13.0.0_r0.14android-gs-raviole-5.10-t-beta-4android-gs-raviole-5.10-t-beta-3android-gs-raviole-5.10-android13android-gs-bluejay-5.10-t-beta-4android-gs-bluejay-5.10-android13
RCD state in DQE is not updated correctly when it is changed. The patch
sets the color_mgmt_changed flag when the state is changed to trigger
dqe update.
Bug: 231553814
Test: Rotate RCD layer when ATC is enabled
Signed-off-by: Yichi Chen <yichichen@google.com>
Change-Id: If420c996d348094bd580878de0f1d0826aa03b4d
-rw-r--r-- | samsung/exynos_drm_crtc.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/samsung/exynos_drm_crtc.c b/samsung/exynos_drm_crtc.c index 0f5fd3e..6a5987a 100644 --- a/samsung/exynos_drm_crtc.c +++ b/samsung/exynos_drm_crtc.c @@ -161,7 +161,6 @@ static int exynos_crtc_atomic_check(struct drm_crtc *crtc, const struct decon_device *decon = exynos_crtc->ctx; const struct exynos_dqe *dqe = decon->dqe; uint32_t max_bpc; - uint32_t rcd_mask; DRM_DEBUG("%s +\n", __func__); @@ -222,8 +221,11 @@ static int exynos_crtc_atomic_check(struct drm_crtc *crtc, new_exynos_state->skip_update = true; if (decon->rcd) { + uint32_t rcd_mask = crtc_state->plane_mask & exynos_crtc->rcd_plane_mask; + uint32_t old_rcd_mask = old_crtc_state->plane_mask & exynos_crtc->rcd_plane_mask; + new_exynos_state->dqe.rcd_enabled = false; - rcd_mask = crtc_state->plane_mask & exynos_crtc->rcd_plane_mask; + crtc_state->color_mgmt_changed |= rcd_mask != old_rcd_mask; if (rcd_mask) { drm_atomic_crtc_state_for_each_plane_state(plane, plane_state, crtc_state) { |