Re: [PATCH 2/7] drm/amd/display: Reset plane when tiling flags change

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

 



On 07/30, Nicholas Kazlauskas wrote:
> [Why]
> Enabling or disable DCC or switching between tiled and linear formats
> can require bandwidth updates.
> 
> They're currently skipping all DC validation by being treated as purely
> surface updates.
> 
> [How]
> Treat tiling_flag changes (which encode DCC state) as a condition for
> resetting the plane.
> 
> Cc: Bhawanpreet Lakha <Bhawanpreet.Lakha@xxxxxxx>
> Cc: Rodrigo Siqueira <Rodrigo.Siqueira@xxxxxxx>
> Cc: Hersen Wu <hersenxs.wu@xxxxxxx>
> Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@xxxxxxx>
> ---
>  .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 19 ++++++++++++++++---
>  1 file changed, 16 insertions(+), 3 deletions(-)
> 
> 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 7cc5ab90ce13..bf1881bd492c 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -8332,6 +8332,8 @@ static bool should_reset_plane(struct drm_atomic_state *state,
>  	 * TODO: Come up with a more elegant solution for this.
>  	 */
>  	for_each_oldnew_plane_in_state(state, other, old_other_state, new_other_state, i) {
> +		struct dm_plane_state *old_dm_plane_state, *new_dm_plane_state;
> +
>  		if (other->type == DRM_PLANE_TYPE_CURSOR)
>  			continue;
>  
> @@ -8342,9 +8344,20 @@ static bool should_reset_plane(struct drm_atomic_state *state,
>  		if (old_other_state->crtc != new_other_state->crtc)
>  			return true;
>  
> -		/* TODO: Remove this once we can handle fast format changes. */
> -		if (old_other_state->fb && new_other_state->fb &&
> -		    old_other_state->fb->format != new_other_state->fb->format)
> +		/* Framebuffer checks fall at the end. */
> +		if (!old_other_state->fb || !new_other_state->fb)
> +			continue;
> +
> +		/* Pixel format changes can require bandwidth updates. */
> +		if (old_other_state->fb->format != new_other_state->fb->format)
> +			return true;
> +
> +		old_dm_plane_state = to_dm_plane_state(old_other_state);
> +		new_dm_plane_state = to_dm_plane_state(new_other_state);
> +
> +		/* Tiling and DCC changes also require bandwidth updates. */
> +		if (old_dm_plane_state->tiling_flags !=
> +		    new_dm_plane_state->tiling_flags)

Why not add a case when we move to a TMZ area?

Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@xxxxxxx>

>  			return true;
>  	}
>  
> -- 
> 2.25.1
> 

-- 
Rodrigo Siqueira
https://siqueira.tech

Attachment: signature.asc
Description: PGP signature

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

[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux