summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>2026-03-10 14:32:38 +0300
committerSuraj Kandpal <suraj.kandpal@intel.com>2026-03-16 06:03:07 +0300
commit6955d6bca0531ffbbaeecac844b7bae84345b3fb (patch)
treebc5cc07e93a415236d5912d74edd6934b41035b6
parent0d9710aeb6959ae244f255986187562fa50504b9 (diff)
downloadlinux-6955d6bca0531ffbbaeecac844b7bae84345b3fb.tar.xz
drm/atomic: Add affected colorops with affected planes
When drm_atomic_add_affected_planes() adds a plane to the atomic state, the associated colorops are not guaranteed to be included. This can leave colorop state out of the transaction when planes are pulled in implicitly (eg. during modeset or internal commits). Also add affected colorops when adding affected planes to keep plane and color pipeline state consistent within the atomic transaction. v2: Add affected colorops only when a pipeline is enabled Fixes: 2afc3184f3b3 ("drm/plane: Add COLOR PIPELINE property") Cc: <stable@vger.kernel.org> #v6.19+ Reviewed-by: Uma Shankar <uma.shankar@intel.com> #v1 Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> Reviewed-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com> Link: https://patch.msgid.link/20260310113238.3495981-3-chaitanya.kumar.borah@intel.com
-rw-r--r--drivers/gpu/drm/drm_atomic.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index 04925166df98..dd9f27cfe991 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -1587,6 +1587,7 @@ drm_atomic_add_affected_planes(struct drm_atomic_state *state,
const struct drm_crtc_state *old_crtc_state =
drm_atomic_get_old_crtc_state(state, crtc);
struct drm_plane *plane;
+ int ret;
WARN_ON(!drm_atomic_get_new_crtc_state(state, crtc));
@@ -1600,6 +1601,12 @@ drm_atomic_add_affected_planes(struct drm_atomic_state *state,
if (IS_ERR(plane_state))
return PTR_ERR(plane_state);
+
+ if (plane_state->color_pipeline) {
+ ret = drm_atomic_add_affected_colorops(state, plane);
+ if (ret)
+ return ret;
+ }
}
return 0;
}