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