]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/atomic: Add affected colorops with affected planes
authorChaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Tue, 10 Mar 2026 11:32:38 +0000 (17:02 +0530)
committerSuraj Kandpal <suraj.kandpal@intel.com>
Mon, 16 Mar 2026 03:03:07 +0000 (08:33 +0530)
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
drivers/gpu/drm/drm_atomic.c

index 04925166df989bcb30b111739aa4ed5c84f3a5ae..dd9f27cfe991de121335ee85a5ca2b07db960393 100644 (file)
@@ -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;
 }