Re: [PATCH 13/19] drm/i915/vrr: Handle joiner with vrr

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2/17/2025 11:47 PM, Ville Syrjälä wrote:
On Fri, Feb 14, 2025 at 05:41:23PM +0530, Ankit Nautiyal wrote:
Do not program transcoder registers for VRR for the secondary pipe of
the joiner. Remove check to skip VRR for joiner case.
Premature. We need to figure out how to correctly sequence
transcoder level stuff vs. pipe level stuff in the commit.

Yeah. I think for now I will drop this patch and get the other bits in place first.


Regards,

Ankit


Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@xxxxxxxxx>
---
  drivers/gpu/drm/i915/display/intel_vrr.c | 19 ++++++++++++-------
  1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c
index a4ed102a2119..61b4ec3756e8 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -332,13 +332,6 @@ intel_vrr_compute_config(struct intel_crtc_state *crtc_state,
  	struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
  	int vmin, vmax;
- /*
-	 * FIXME all joined pipes share the same transcoder.
-	 * Need to account for that during VRR toggle/push/etc.
-	 */
-	if (crtc_state->joiner_pipes)
-		return;
-
  	if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE)
  		return;
@@ -430,6 +423,9 @@ void intel_vrr_set_transcoder_timings(const struct intel_crtc_state *crtc_state)
  	struct intel_display *display = to_intel_display(crtc_state);
  	enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
+ if (intel_crtc_is_joiner_secondary(crtc_state))
+		return;
+
  	/*
  	 * This bit seems to have two meanings depending on the platform:
  	 * TGL: generate VRR "safe window" for DSB vblank waits
@@ -481,6 +477,9 @@ void intel_vrr_send_push(struct intel_dsb *dsb,
  	if (!crtc_state->vrr.enable)
  		return;
+ if (intel_crtc_is_joiner_secondary(crtc_state))
+		return;
+
  	if (dsb)
  		intel_dsb_nonpost_start(dsb);
@@ -545,6 +544,9 @@ void intel_vrr_enable(const struct intel_crtc_state *crtc_state)
  	if (!crtc_state->vrr.enable)
  		return;
+ if (intel_crtc_is_joiner_secondary(crtc_state))
+		return;
+
  	intel_de_write(display, TRANS_VRR_VMIN(display, cpu_transcoder),
  		       crtc_state->vrr.vmin - 1);
  	intel_de_write(display, TRANS_VRR_VMAX(display, cpu_transcoder),
@@ -587,6 +589,9 @@ void intel_vrr_disable(const struct intel_crtc_state *old_crtc_state)
  	if (!old_crtc_state->vrr.enable)
  		return;
+ if (intel_crtc_is_joiner_secondary(old_crtc_state))
+		return;
+
  	intel_de_write(display, TRANS_VRR_CTL(display, cpu_transcoder),
  		       trans_vrr_ctl(old_crtc_state));
  	intel_de_wait_for_clear(display,
--
2.45.2



[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux