[PATCH 05/12] drm/i915/dp: Add SDP latency computation helper

Golani, Mitulkumar Ajitkumar mitulkumar.ajitkumar.golani at intel.com
Mon Aug 18 16:14:55 UTC 2025



> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces at lists.freedesktop.org> On Behalf Of Ankit
> Nautiyal
> Sent: 18 August 2025 13:01
> To: intel-gfx at lists.freedesktop.org; intel-xe at lists.freedesktop.org
> Cc: ville.syrjala at linux.intel.com; Nautiyal, Ankit K <ankit.k.nautiyal at intel.com>
> Subject: [PATCH 05/12] drm/i915/dp: Add SDP latency computation helper
> 
> Add a helper to compute vblank time needed for transmitting specific
> DisplayPort SDPs like PPS, GAMUT_METADATA, and VSC_EXT. Latency is based
> on line count per packet type and current line time.
> 
> Used to ensure adequate vblank when features like DSC/HDR are enabled.
> 
> Bspec: 70151
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal at intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dp.c | 47 +++++++++++++++++++++++++
> drivers/gpu/drm/i915/display/intel_dp.h |  1 +
>  2 files changed, 48 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index 625036c47bdf..0c2bec1fbe42 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -6826,3 +6826,50 @@ void intel_dp_mst_resume(struct intel_display
> *display)
>  		}
>  	}
>  }
> +
> +static
> +int intel_dp_get_sdp_latency(u32 type, int linetime_us) {
> +	int lines;
> +
> +	switch (type) {
> +	case DP_SDP_VSC_EXT_VESA:
> +	case DP_SDP_VSC_EXT_CEA:
> +		lines = 10;
> +		break;
> +	case HDMI_PACKET_TYPE_GAMUT_METADATA:
> +		lines = 8;
> +		break;
> +	case DP_SDP_PPS:
> +		lines = 6;
> +		break;
> +	default:
> +		lines = 0;
> +		break;
> +	}
> +
> +	return lines * linetime_us;
> +}
> +
> +int intel_dp_compute_sdp_latency(struct intel_crtc_state *crtc_state,
> +				 bool assume_all_enabled)
> +{
> +	const struct drm_display_mode *adjusted_mode = &crtc_state-
> >hw.adjusted_mode;
> +	int sdp_latency = 0;
> +	int linetime_us;
> +
> +	linetime_us = DIV_ROUND_UP(adjusted_mode->crtc_htotal * 1000,
> +				   adjusted_mode->crtc_clock);
> +	if (assume_all_enabled ||
> +	    crtc_state->infoframes.enable &
> +
> intel_hdmi_infoframe_enable(HDMI_PACKET_TYPE_GAMUT_METADATA))
> +		sdp_latency = max(sdp_latency,
> +
> intel_dp_get_sdp_latency(HDMI_PACKET_TYPE_GAMUT_METADATA,
> +							   linetime_us));
> +
> +	if (assume_all_enabled || crtc_state->dsc.compression_enable)
> +		sdp_latency = max(sdp_latency,
> +				  intel_dp_get_sdp_latency(DP_SDP_PPS,
> linetime_us));
> +
> +	return sdp_latency;
> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.h
> b/drivers/gpu/drm/i915/display/intel_dp.h
> index 0657f5681196..994994d68475 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.h
> +++ b/drivers/gpu/drm/i915/display/intel_dp.h
> @@ -214,5 +214,6 @@ int intel_dp_compute_min_hblank(struct
> intel_crtc_state *crtc_state,
> 
>  int intel_dp_dsc_bpp_step_x16(const struct intel_connector *connector);  void
> intel_dp_dpcd_set_probe(struct intel_dp *intel_dp, bool force_on_external);
> +int intel_dp_compute_sdp_latency(struct intel_crtc_state *crtc_state,
> +bool assume_all_enabled);

Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani at intel.com>

> 
>  #endif /* __INTEL_DP_H__ */
> --
> 2.45.2



More information about the Intel-xe mailing list