[Freedreno] [PATCH v2 01/27] drm/msm/dpu: set pdpu->is_rt_pipe early in dpu_plane_sspp_atomic_update()
Abhinav Kumar
quic_abhinavk at quicinc.com
Thu Jan 26 19:26:07 UTC 2023
On 12/29/2022 11:18 AM, Dmitry Baryshkov wrote:
> The function dpu_plane_sspp_atomic_update() updates pdpu->is_rt_pipe
> flag, but after the commit 854f6f1c653b ("drm/msm/dpu: update the qos
> remap only if the client type changes") it sets the flag late, after all
> the qos functions have updated QoS programming. Move the flag update
> back to the place where it happended before the mentioned commit to let
happended ---> happened
> the pipe be programmed according to its current RT/non-RT state.
>
> Fixes: 854f6f1c653b ("drm/msm/dpu: update the qos remap only if the client type changes")
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
With that nit fixed,
Reviewed-by: Abhinav Kumar <quic_abhinavk at quicinc.com>
Looks much cleaner now, thanks !
> ---
> drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 15 ++++++---------
> 1 file changed, 6 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> index 86719020afe2..bfd5be89e8b8 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> @@ -1126,7 +1126,7 @@ static void dpu_plane_sspp_atomic_update(struct drm_plane *plane)
> struct dpu_plane_state *pstate = to_dpu_plane_state(state);
> struct drm_crtc *crtc = state->crtc;
> struct drm_framebuffer *fb = state->fb;
> - bool is_rt_pipe, update_qos_remap;
> + bool is_rt_pipe;
> const struct dpu_format *fmt =
> to_dpu_format(msm_framebuffer_format(fb));
> struct dpu_hw_pipe_cfg pipe_cfg;
> @@ -1138,6 +1138,9 @@ static void dpu_plane_sspp_atomic_update(struct drm_plane *plane)
> pstate->pending = true;
>
> is_rt_pipe = (dpu_crtc_get_client_type(crtc) != NRT_CLIENT);
> + pstate->needs_qos_remap |= (is_rt_pipe != pdpu->is_rt_pipe);
> + pdpu->is_rt_pipe = is_rt_pipe;
> +
> _dpu_plane_set_qos_ctrl(plane, false, DPU_PLANE_QOS_PANIC_CTRL);
>
> DPU_DEBUG_PLANE(pdpu, "FB[%u] " DRM_RECT_FP_FMT "->crtc%u " DRM_RECT_FMT
> @@ -1219,14 +1222,8 @@ static void dpu_plane_sspp_atomic_update(struct drm_plane *plane)
> _dpu_plane_set_ot_limit(plane, crtc, &pipe_cfg);
> }
>
> - update_qos_remap = (is_rt_pipe != pdpu->is_rt_pipe) ||
> - pstate->needs_qos_remap;
> -
> - if (update_qos_remap) {
> - if (is_rt_pipe != pdpu->is_rt_pipe)
> - pdpu->is_rt_pipe = is_rt_pipe;
> - else if (pstate->needs_qos_remap)
> - pstate->needs_qos_remap = false;
> + if (pstate->needs_qos_remap) {
> + pstate->needs_qos_remap = false;
> _dpu_plane_set_qos_remap(plane);
> }
>
More information about the Freedreno
mailing list