[PATCH] drm/amd/display: Skip create new stream if crtc state doesn't change

Kazlauskas, Nicholas Nicholas.Kazlauskas at amd.com
Mon Jan 14 16:16:35 UTC 2019


On 1/14/19 11:05 AM, Jerry (Fangzhi) Zuo wrote:
> Need to check if crtc state is changed so that mode set is
> required before trying to create new stream.
> 
> It deals with the MST hotplug use case when plug back to the
> same connector where the failure to create new stream for the
> inactive crtc state. Simply skip the check for the old connector
> and go through the new one.
> 
> Signed-off-by: Jerry (Fangzhi) Zuo <Jerry.Zuo at amd.com>
> ---
>   drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 ++++
>   1 file changed, 4 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 987095ccd2c5..68739d0c600c 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -5593,6 +5593,9 @@ static int dm_update_crtc_state(struct amdgpu_display_manager *dm,
>   		goto fail;
>   	}
>   
> +	if (!drm_atomic_crtc_needs_modeset(new_crtc_state))
> +		return 0;

I had thought this was okay at first, but this will skip stream updates 
when needs_modeset = false.

Changing this line to just goto skip_modeset isn't sufficient either, we 
need drm_new_conn_state and drm_old_conn_state I believe below.

This check should probably be placed within the

if (aconnector && enable) block directly before the

new_stream = create_stream_for_sink(aconnector,

line. This should give you the behavior you're looking for.

Nicholas Kazlauskas

> +
>   	aconnector = amdgpu_dm_find_first_crtc_matching_connector(state, crtc);
>   
>   	/* TODO This hack should go away */
> @@ -5640,6 +5643,7 @@ static int dm_update_crtc_state(struct amdgpu_display_manager *dm,
>   		}
>   	}
>   
> +	/* mode_changed flag may get updated above, need to check again */
>   	if (!drm_atomic_crtc_needs_modeset(new_crtc_state))
>   		goto skip_modeset;
>   
> 



More information about the amd-gfx mailing list