Commit c132ec36 authored by Ankit Nautiyal's avatar Ankit Nautiyal
Browse files

drm/i915/dp: Correct max compressed bpp bounds by using link bpp



While setting the bounds for compressed bpp, we ensure that the
compressed bpp is less than the pipe bpp.

This causes an issue with the 420 output format, where the effective
link bpp (or output bpp) is half that of the pipe bpp. Therefore instead
of using pipe bpp, use the output bpp to set the bounds for the
compressed bpp.

v2: Use identifier output_bpp instead of link_bpp (Imre)

Signed-off-by: default avatarAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: default avatarImre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250117050713.152012-1-ankit.k.nautiyal@intel.com
parent 6f715074
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -2068,9 +2068,10 @@ icl_dsc_compute_link_config(struct intel_dp *intel_dp,
			    int timeslots)
{
	int i, ret;
	int output_bpp = intel_dp_output_bpp(pipe_config->output_format, pipe_bpp);

	/* Compressed BPP should be less than the Input DSC bpp */
	dsc_max_bpp = min(dsc_max_bpp, pipe_bpp - 1);
	dsc_max_bpp = min(dsc_max_bpp, output_bpp - 1);

	for (i = 0; i < ARRAY_SIZE(valid_dsc_bpp); i++) {
		if (valid_dsc_bpp[i] < dsc_min_bpp)
@@ -2111,6 +2112,7 @@ xelpd_dsc_compute_link_config(struct intel_dp *intel_dp,
{
	struct intel_display *display = to_intel_display(intel_dp);
	u8 bppx16_incr = drm_dp_dsc_sink_bpp_incr(connector->dp.dsc_dpcd);
	int output_bpp = intel_dp_output_bpp(pipe_config->output_format, pipe_bpp);
	u16 compressed_bppx16;
	u8 bppx16_step;
	int ret;
@@ -2121,7 +2123,7 @@ xelpd_dsc_compute_link_config(struct intel_dp *intel_dp,
		bppx16_step = 16 / bppx16_incr;

	/* Compressed BPP should be less than the Input DSC bpp */
	dsc_max_bpp = min(dsc_max_bpp << 4, (pipe_bpp << 4) - bppx16_step);
	dsc_max_bpp = min(dsc_max_bpp << 4, (output_bpp << 4) - bppx16_step);
	dsc_min_bpp = dsc_min_bpp << 4;

	for (compressed_bppx16 = dsc_max_bpp;