[Intel-gfx] [PATCH 01/11] drm/i915/dp: Check if force dsc bpc <= max requested bpc
Ankit Nautiyal
ankit.k.nautiyal at intel.com
Mon Nov 28 10:19:12 UTC 2022
Add a check to use force DSC bpc only if its less that the connector max
requested bpc.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal at intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 23 ++++++++++++++++++-----
1 file changed, 18 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 67089711d9e2..30e8a4bd43ac 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -1474,7 +1474,7 @@ static int intel_dp_dsc_compute_config(struct intel_dp *intel_dp,
struct drm_i915_private *dev_priv = to_i915(dig_port->base.base.dev);
const struct drm_display_mode *adjusted_mode =
&pipe_config->hw.adjusted_mode;
- int pipe_bpp;
+ int pipe_bpp, pipe_bpp_max;
int ret;
pipe_config->fec_enable = !intel_dp_is_edp(intel_dp) &&
@@ -1483,9 +1483,21 @@ static int intel_dp_dsc_compute_config(struct intel_dp *intel_dp,
if (!intel_dp_supports_dsc(intel_dp, pipe_config))
return -EINVAL;
- pipe_bpp = intel_dp_dsc_compute_bpp(intel_dp, conn_state->max_requested_bpc);
+ /*
+ * If Force DSC BPC is set, try to use that to compute the pipe bpp,
+ * otherwise set pipe_bpp to the max bpp.
+ */
+ pipe_bpp_max = intel_dp_dsc_compute_bpp(intel_dp, conn_state->max_requested_bpc);
- if (intel_dp->force_dsc_bpc) {
+ if (!intel_dp->force_dsc_bpc) {
+ pipe_bpp = pipe_bpp_max;
+ } else if (intel_dp->force_dsc_bpc &&
+ intel_dp->force_dsc_bpc > conn_state->max_requested_bpc) {
+ drm_dbg_kms(&dev_priv->drm,
+ "Ignoring force dsc bpc:%d, conflict with max requested bpc:%d",
+ intel_dp->force_dsc_bpc, conn_state->max_requested_bpc);
+ pipe_bpp = pipe_bpp_max;
+ } else {
pipe_bpp = intel_dp->force_dsc_bpc * 3;
drm_dbg_kms(&dev_priv->drm, "Input DSC BPP forced to %d", pipe_bpp);
}
@@ -1497,12 +1509,13 @@ static int intel_dp_dsc_compute_config(struct intel_dp *intel_dp,
return -EINVAL;
}
+ pipe_config->pipe_bpp = pipe_bpp;
+
/*
- * For now enable DSC for max bpp, max link rate, max lane count.
+ * For now enable DSC for max link rate, max lane count.
* Optimize this later for the minimum possible link rate/lane count
* with DSC enabled for the requested mode.
*/
- pipe_config->pipe_bpp = pipe_bpp;
pipe_config->port_clock = limits->max_rate;
pipe_config->lane_count = limits->max_lane_count;
--
2.25.1
More information about the Intel-gfx
mailing list