All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lyude Paul <lyude@redhat.com>
To: mikita.lipski@amd.com, amd-gfx@lists.freedesktop.org
Cc: Leo Li <sunpeng.li@amd.com>,
	David Francis <David.Francis@amd.com>,
	Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>,
	dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v8 17/17] drm/amd/display: Trigger modesets on MST DSC connectors
Date: Fri, 06 Dec 2019 19:53:17 -0500	[thread overview]
Message-ID: <e66797033e52cb9495e6df7802e2928eead70bf3.camel@redhat.com> (raw)
In-Reply-To: <20191203143530.27262-18-mikita.lipski@amd.com>

Reviewed-by: Lyude Paul <lyude@redhat.com>

On Tue, 2019-12-03 at 09:35 -0500, mikita.lipski@amd.com wrote:
> From: Mikita Lipski <mikita.lipski@amd.com>
> 
> Whenever a connector on an MST network is attached, detached, or
> undergoes a modeset, the DSC configs for each stream on that
> topology will be recalculated. This can change their required
> bandwidth, requiring a full reprogramming, as though a modeset
> was performed, even if that stream did not change timing.
> 
> Therefore, whenever a crtc has drm_atomic_crtc_needs_modeset,
> for each crtc that shares a MST topology with that stream and
> supports DSC, add that crtc (and all affected connectors and
> planes) to the atomic state and set mode_changed on its state
> 
> v2: Do this check only on Navi and before adding connectors
> and planes on modesetting crtcs
> 
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
> Cc: Lyude Paul <lyude@redhat.com>
> Signed-off-by: David Francis <David.Francis@amd.com>
> Signed-off-by: Mikita Lipski <mikita.lipski@amd.com>
> ---
>  .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 33 +++++++++++++++++++
>  1 file changed, 33 insertions(+)
> 
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> index 2ac3a2f0b452..909665427110 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -7930,6 +7930,29 @@ dm_determine_update_type_for_commit(struct
> amdgpu_display_manager *dm,
>  	return ret;
>  }
>  
> +static int add_affected_mst_dsc_crtcs(struct drm_atomic_state *state,
> struct drm_crtc *crtc)
> +{
> +	struct drm_connector *connector;
> +	struct drm_connector_state *conn_state;
> +	struct amdgpu_dm_connector *aconnector = NULL;
> +	int i;
> +	for_each_new_connector_in_state(state, connector, conn_state, i) {
> +		if (conn_state->crtc != crtc)
> +			continue;
> +
> +		aconnector = to_amdgpu_dm_connector(connector);
> +		if (!aconnector->port)
> +			aconnector = NULL;
> +		else
> +			break;
> +	}
> +
> +	if (!aconnector)
> +		return 0;
> +
> +	return drm_dp_mst_add_affected_dsc_crtcs(state, &aconnector->mst_mgr);
> +}
> +
>  /**
>   * amdgpu_dm_atomic_check() - Atomic check implementation for AMDgpu DM.
>   * @dev: The DRM device
> @@ -7982,6 +8005,16 @@ static int amdgpu_dm_atomic_check(struct drm_device
> *dev,
>  	if (ret)
>  		goto fail;
>  
> +	if (adev->asic_type >= CHIP_NAVI10) {
> +		for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state,
> new_crtc_state, i) {
> +			if (drm_atomic_crtc_needs_modeset(new_crtc_state)) {
> +				ret = add_affected_mst_dsc_crtcs(state, crtc);
> +				if (ret)
> +					goto fail;
> +			}
> +		}
> +	}
> +
>  	for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state,
> new_crtc_state, i) {
>  		if (!drm_atomic_crtc_needs_modeset(new_crtc_state) &&
>  		    !new_crtc_state->color_mgmt_changed &&
-- 
Cheers,
	Lyude Paul

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: Lyude Paul <lyude@redhat.com>
To: mikita.lipski@amd.com, amd-gfx@lists.freedesktop.org
Cc: Leo Li <sunpeng.li@amd.com>,
	David Francis <David.Francis@amd.com>,
	Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>,
	dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v8 17/17] drm/amd/display: Trigger modesets on MST DSC connectors
Date: Fri, 06 Dec 2019 19:53:17 -0500	[thread overview]
Message-ID: <e66797033e52cb9495e6df7802e2928eead70bf3.camel@redhat.com> (raw)
In-Reply-To: <20191203143530.27262-18-mikita.lipski@amd.com>

Reviewed-by: Lyude Paul <lyude@redhat.com>

On Tue, 2019-12-03 at 09:35 -0500, mikita.lipski@amd.com wrote:
> From: Mikita Lipski <mikita.lipski@amd.com>
> 
> Whenever a connector on an MST network is attached, detached, or
> undergoes a modeset, the DSC configs for each stream on that
> topology will be recalculated. This can change their required
> bandwidth, requiring a full reprogramming, as though a modeset
> was performed, even if that stream did not change timing.
> 
> Therefore, whenever a crtc has drm_atomic_crtc_needs_modeset,
> for each crtc that shares a MST topology with that stream and
> supports DSC, add that crtc (and all affected connectors and
> planes) to the atomic state and set mode_changed on its state
> 
> v2: Do this check only on Navi and before adding connectors
> and planes on modesetting crtcs
> 
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
> Cc: Lyude Paul <lyude@redhat.com>
> Signed-off-by: David Francis <David.Francis@amd.com>
> Signed-off-by: Mikita Lipski <mikita.lipski@amd.com>
> ---
>  .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 33 +++++++++++++++++++
>  1 file changed, 33 insertions(+)
> 
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> index 2ac3a2f0b452..909665427110 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -7930,6 +7930,29 @@ dm_determine_update_type_for_commit(struct
> amdgpu_display_manager *dm,
>  	return ret;
>  }
>  
> +static int add_affected_mst_dsc_crtcs(struct drm_atomic_state *state,
> struct drm_crtc *crtc)
> +{
> +	struct drm_connector *connector;
> +	struct drm_connector_state *conn_state;
> +	struct amdgpu_dm_connector *aconnector = NULL;
> +	int i;
> +	for_each_new_connector_in_state(state, connector, conn_state, i) {
> +		if (conn_state->crtc != crtc)
> +			continue;
> +
> +		aconnector = to_amdgpu_dm_connector(connector);
> +		if (!aconnector->port)
> +			aconnector = NULL;
> +		else
> +			break;
> +	}
> +
> +	if (!aconnector)
> +		return 0;
> +
> +	return drm_dp_mst_add_affected_dsc_crtcs(state, &aconnector->mst_mgr);
> +}
> +
>  /**
>   * amdgpu_dm_atomic_check() - Atomic check implementation for AMDgpu DM.
>   * @dev: The DRM device
> @@ -7982,6 +8005,16 @@ static int amdgpu_dm_atomic_check(struct drm_device
> *dev,
>  	if (ret)
>  		goto fail;
>  
> +	if (adev->asic_type >= CHIP_NAVI10) {
> +		for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state,
> new_crtc_state, i) {
> +			if (drm_atomic_crtc_needs_modeset(new_crtc_state)) {
> +				ret = add_affected_mst_dsc_crtcs(state, crtc);
> +				if (ret)
> +					goto fail;
> +			}
> +		}
> +	}
> +
>  	for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state,
> new_crtc_state, i) {
>  		if (!drm_atomic_crtc_needs_modeset(new_crtc_state) &&
>  		    !new_crtc_state->color_mgmt_changed &&
-- 
Cheers,
	Lyude Paul

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

  reply	other threads:[~2019-12-07  0:53 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-03 14:35 [PATCH v8 00/17] DSC MST support for DRM and AMDGPU mikita.lipski
2019-12-03 14:35 ` mikita.lipski
2019-12-03 14:35 ` [PATCH v8 01/17] drm/dp_mst: Add PBN calculation for DSC modes mikita.lipski
2019-12-03 14:35   ` mikita.lipski
2019-12-06  0:22   ` kbuild test robot
2019-12-06  0:22     ` kbuild test robot
2019-12-06  0:22     ` kbuild test robot
2019-12-07  0:17   ` Lyude Paul
2019-12-07  0:17     ` Lyude Paul
2019-12-07 22:13     ` Lipski, Mikita
2019-12-07 22:13       ` Lipski, Mikita
2019-12-03 14:35 ` [PATCH v8 02/17] drm/dp_mst: Parse FEC capability on MST ports mikita.lipski
2019-12-03 14:35   ` mikita.lipski
2019-12-03 21:09   ` kbuild test robot
2019-12-03 21:09     ` kbuild test robot
2019-12-03 21:09     ` kbuild test robot
2019-12-03 14:35 ` [PATCH v8 03/17] drm/dp_mst: Add MST support to DP DPCD R/W functions mikita.lipski
2019-12-03 14:35   ` mikita.lipski
2019-12-03 14:35 ` [PATCH v8 04/17] drm/dp_mst: Fill branch->num_ports mikita.lipski
2019-12-03 14:35   ` mikita.lipski
2019-12-06  4:30   ` Harry Wentland
2019-12-06  4:30     ` Harry Wentland
2019-12-03 14:35 ` [PATCH v8 05/17] drm/dp_mst: Add helpers for MST DSC and virtual DPCD aux mikita.lipski
2019-12-03 14:35   ` mikita.lipski
2019-12-03 14:35 ` [PATCH v8 06/17] drm/dp_mst: Add new quirk for Synaptics MST hubs mikita.lipski
2019-12-03 14:35   ` mikita.lipski
2019-12-03 14:35 ` [PATCH v8 07/17] drm/amd/display: Initialize DSC PPS variables to 0 mikita.lipski
2019-12-03 14:35   ` mikita.lipski
2019-12-03 14:35 ` [PATCH v8 08/17] drm/amd/display: Validate DSC caps on MST endpoints mikita.lipski
2019-12-03 14:35   ` mikita.lipski
2019-12-03 14:35 ` [PATCH v8 09/17] drm/amd/display: Write DSC enable to MST DPCD mikita.lipski
2019-12-03 14:35   ` mikita.lipski
2019-12-03 14:35 ` [PATCH v8 10/17] drm/dp_mst: Manually overwrite PBN divider for calculating timeslots mikita.lipski
2019-12-03 14:35   ` mikita.lipski
2019-12-03 14:35 ` [PATCH v8 11/17] drm/dp_mst: Add DSC enablement helpers to DRM mikita.lipski
2019-12-03 14:35   ` mikita.lipski
2019-12-03 21:52   ` kbuild test robot
2019-12-03 21:52     ` kbuild test robot
2019-12-03 21:52     ` kbuild test robot
2019-12-07  0:24   ` Lyude Paul
2019-12-07  0:24     ` Lyude Paul
2019-12-09 14:07     ` Mikita Lipski
2019-12-09 14:07       ` Mikita Lipski
2019-12-03 14:35 ` [PATCH v8 12/17] drm/dp_mst: Add branch bandwidth validation to MST atomic check mikita.lipski
2019-12-03 14:35   ` mikita.lipski
2019-12-05 19:28   ` Harry Wentland
2019-12-05 19:28     ` Harry Wentland
2019-12-07  0:30   ` Lyude Paul
2019-12-07  0:30     ` Lyude Paul
2019-12-03 14:35 ` [PATCH v8 13/17] drm/amd/display: Add PBN per slot calculation for DSC mikita.lipski
2019-12-03 14:35   ` mikita.lipski
2019-12-03 14:35 ` [PATCH v8 14/17] drm/amd/display: MST DSC compute fair share mikita.lipski
2019-12-03 14:35   ` mikita.lipski
2019-12-07  0:53   ` Lyude Paul
2019-12-07  0:53     ` Lyude Paul
2019-12-03 14:35 ` [PATCH v8 15/17] drm/amd/display: Recalculate VCPI slots for new DSC connectors mikita.lipski
2019-12-03 14:35   ` mikita.lipski
2019-12-07  0:52   ` Lyude Paul
2019-12-07  0:52     ` Lyude Paul
2019-12-03 14:35 ` [PATCH v8 16/17] drm/dp_mst: Add helper to trigger modeset on affected DSC MST CRTCs mikita.lipski
2019-12-03 14:35   ` mikita.lipski
2019-12-03 22:40   ` kbuild test robot
2019-12-03 22:40     ` kbuild test robot
2019-12-03 22:40     ` kbuild test robot
2019-12-07  0:51   ` Lyude Paul
2019-12-07  0:51     ` Lyude Paul
2019-12-03 14:35 ` [PATCH v8 17/17] drm/amd/display: Trigger modesets on MST DSC connectors mikita.lipski
2019-12-03 14:35   ` mikita.lipski
2019-12-07  0:53   ` Lyude Paul [this message]
2019-12-07  0:53     ` Lyude Paul

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e66797033e52cb9495e6df7802e2928eead70bf3.camel@redhat.com \
    --to=lyude@redhat.com \
    --cc=David.Francis@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=mikita.lipski@amd.com \
    --cc=nicholas.kazlauskas@amd.com \
    --cc=sunpeng.li@amd.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.