]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
drm/i915/dsc: move slice height calculation to encoder
authorJani Nikula <jani.nikula@intel.com>
Tue, 10 Dec 2019 10:50:49 +0000 (12:50 +0200)
committerJani Nikula <jani.nikula@intel.com>
Wed, 11 Dec 2019 05:39:57 +0000 (07:39 +0200)
Turns out this isn't compatible with DSI, where we use the value from
VBT. No functional changes.

Cc: Manasi Navare <manasi.d.navare@intel.com>
Cc: Vandita Kulkarni <vandita.kulkarni@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Vandita Kulkarni <vandita.kulkarni@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/3dd689688a51daff26088eaf6feac27f8b9f5ebc.1575974743.git.jani.nikula@intel.com
drivers/gpu/drm/i915/display/intel_dp.c
drivers/gpu/drm/i915/display/intel_vdsc.c

index 2b76d6f172a1dea982efec8e91d9e2088722c9d0..0d98ba7e98c020793a5878d49508717867553f34 100644 (file)
@@ -2060,6 +2060,18 @@ static int intel_dp_dsc_compute_params(struct intel_encoder *encoder,
        if (ret)
                return ret;
 
+       /*
+        * Slice Height of 8 works for all currently available panels. So start
+        * with that if pic_height is an integral multiple of 8. Eventually add
+        * logic to try multiple slice heights.
+        */
+       if (vdsc_cfg->pic_height % 8 == 0)
+               vdsc_cfg->slice_height = 8;
+       else if (vdsc_cfg->pic_height % 4 == 0)
+               vdsc_cfg->slice_height = 4;
+       else
+               vdsc_cfg->slice_height = 2;
+
        vdsc_cfg->dsc_version_major =
                (intel_dp->dsc_dpcd[DP_DSC_REV - DP_DSC_SUPPORT] &
                 DP_DSC_MAJOR_MASK) >> DP_DSC_MAJOR_SHIFT;
index 834d665a47d2763e21e706b19b39aca6babed11e..c53024dfb1ecfc5ab4f171c5f510e77526923add 100644 (file)
@@ -345,17 +345,6 @@ int intel_dsc_compute_params(struct intel_encoder *encoder,
        vdsc_cfg->pic_height = pipe_config->hw.adjusted_mode.crtc_vdisplay;
        vdsc_cfg->slice_width = DIV_ROUND_UP(vdsc_cfg->pic_width,
                                             pipe_config->dsc.slice_count);
-       /*
-        * Slice Height of 8 works for all currently available panels. So start
-        * with that if pic_height is an integral multiple of 8.
-        * Eventually add logic to try multiple slice heights.
-        */
-       if (vdsc_cfg->pic_height % 8 == 0)
-               vdsc_cfg->slice_height = 8;
-       else if (vdsc_cfg->pic_height % 4 == 0)
-               vdsc_cfg->slice_height = 4;
-       else
-               vdsc_cfg->slice_height = 2;
 
        /* Gen 11 does not support YCbCr */
        vdsc_cfg->simple_422 = false;