diff mbox series

[v1,1/2] drm/i915/display: Skip state checker for AS SDP infoframe enable

Message ID 20250203161447.2643039-2-mitulkumar.ajitkumar.golani@intel.com (mailing list archive)
State New
Headers show
Series Compute as_sdp when vrr is enabled | expand

Commit Message

Golani, Mitulkumar Ajitkumar Feb. 3, 2025, 4:14 p.m. UTC
Avoid full modeset by skipping infoframe.enable check when toggling
AS SDP while enabling VRR or while state change from PSR to VRR,
preventing full modeset while pipe config changes.

Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Nautiyal, Ankit K Feb. 4, 2025, 4:21 a.m. UTC | #1
On 2/3/2025 9:44 PM, Mitul Golani wrote:
> Avoid full modeset by skipping infoframe.enable check when toggling
> AS SDP while enabling VRR or while state change from PSR to VRR,
> preventing full modeset while pipe config changes.

I dont think this is related to PSR.


>
> Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
> ---
>   drivers/gpu/drm/i915/display/intel_display.c | 6 ++++--
>   1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index a6383ddde871..8415b305f702 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -5744,9 +5744,11 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
>   
>   	if (current_config->has_psr || pipe_config->has_psr)
>   		PIPE_CONF_CHECK_X_WITH_MASK(infoframes.enable,
> -					    ~intel_hdmi_infoframe_enable(DP_SDP_VSC));
> +					    ~(intel_hdmi_infoframe_enable(DP_SDP_VSC) |
> +					      intel_hdmi_infoframe_enable(DP_SDP_ADAPTIVE_SYNC)));
>   	else
> -		PIPE_CONF_CHECK_X(infoframes.enable);
> +		PIPE_CONF_CHECK_X_WITH_MASK(infoframes.enable,
> +					    ~intel_hdmi_infoframe_enable(DP_SDP_ADAPTIVE_SYNC));

As I understand we want to skip the check for DP_SDP_VSC when PSR is 
involved and DP_SDP_ADAPTIVE_SYNC when VRR is enabled so as to avoid 
full modeset when switch happens for these features.

how about:

exclude_infoframes = 0;
if (current_config->has_psr || pipe_config->has_psr)
           exclude_infoframes |= intel_hdmi_infoframe_enable(DP_SDP_VSC);

if (pipe_config->vrr.enable)
           exclude_infoframes |= 
intel_hdmi_infoframe_enable(DP_SDP_ADAPTIVE_SYNC)));

PIPE_CONF_CHECK_X_WITH_MASK(infoframes.enable, exclude_infoframes);


Regards,

Ankit

>   
>   	PIPE_CONF_CHECK_X(infoframes.gcp);
>   	PIPE_CONF_CHECK_INFOFRAME(avi);
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index a6383ddde871..8415b305f702 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -5744,9 +5744,11 @@  intel_pipe_config_compare(const struct intel_crtc_state *current_config,
 
 	if (current_config->has_psr || pipe_config->has_psr)
 		PIPE_CONF_CHECK_X_WITH_MASK(infoframes.enable,
-					    ~intel_hdmi_infoframe_enable(DP_SDP_VSC));
+					    ~(intel_hdmi_infoframe_enable(DP_SDP_VSC) |
+					      intel_hdmi_infoframe_enable(DP_SDP_ADAPTIVE_SYNC)));
 	else
-		PIPE_CONF_CHECK_X(infoframes.enable);
+		PIPE_CONF_CHECK_X_WITH_MASK(infoframes.enable,
+					    ~intel_hdmi_infoframe_enable(DP_SDP_ADAPTIVE_SYNC));
 
 	PIPE_CONF_CHECK_X(infoframes.gcp);
 	PIPE_CONF_CHECK_INFOFRAME(avi);