]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/color: Place 3D LUT after CSC in plane color pipeline
authorChaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Tue, 13 Jan 2026 10:22:51 +0000 (15:52 +0530)
committerMaarten Lankhorst <dev@lankhorst.se>
Thu, 22 Jan 2026 09:24:30 +0000 (10:24 +0100)
Move the 3D LUT block to its correct position in the plane
color pipeline:

  [Pre-CSC] -> [CSC] -> [3DLUT] -> [Post-CSC]

Fixes: 65db7a1f9cf7 ("drm/i915/color: Add 3D LUT to color pipeline")
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
Acked-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patch.msgid.link/20260113102303.724205-2-chaitanya.kumar.borah@intel.com
drivers/gpu/drm/i915/display/intel_color_pipeline.c

index 942d9b9c93ce3fa5b9d09be6a262d4ae7c835c95..684641c8323b56bf3670a1943f24c5395c10102a 100644 (file)
@@ -39,6 +39,15 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en
        /* TODO: handle failures and clean up */
        prev_op = &colorop->base;
 
+       colorop = intel_colorop_create(INTEL_PLANE_CB_CSC);
+       ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane,
+                                            DRM_COLOROP_FLAG_ALLOW_BYPASS);
+       if (ret)
+               return ret;
+
+       drm_colorop_set_next_property(prev_op, &colorop->base);
+       prev_op = &colorop->base;
+
        if (DISPLAY_VER(display) >= 35 &&
            intel_color_crtc_has_3dlut(display, pipe) &&
            plane->type == DRM_PLANE_TYPE_PRIMARY) {
@@ -55,15 +64,6 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en
                prev_op = &colorop->base;
        }
 
-       colorop = intel_colorop_create(INTEL_PLANE_CB_CSC);
-       ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane,
-                                            DRM_COLOROP_FLAG_ALLOW_BYPASS);
-       if (ret)
-               return ret;
-
-       drm_colorop_set_next_property(prev_op, &colorop->base);
-       prev_op = &colorop->base;
-
        colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT);
        ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane,
                                                  PLANE_GAMMA_SIZE,