mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2025-07-07 18:05:21 +02:00
drm/msm/dpu: take plane rotation into account for wide planes
[ Upstream commitd3a785e4f9
] Take into account the plane rotation and flipping when calculating src positions for the wide plane parts. This is not an issue yet, because rotation is only supported for the UBWC planes and wide UBWC planes are rejected anyway because in parallel multirect case only the half of the usual width is supported for tiled formats. However it's better to fix this now rather than stumbling upon it later. Fixes:80e8ae3b38
("drm/msm/dpu: add support for wide planes") Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Patchwork: https://patchwork.freedesktop.org/patch/601059/ Link: https://lore.kernel.org/r/20240627-dpu-virtual-wide-v5-3-5efb90cbb8be@linaro.org Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
1af8f3db50
commit
8b93b3e158
|
@ -865,6 +865,10 @@ static int dpu_plane_atomic_check(struct drm_plane *plane,
|
||||||
|
|
||||||
max_linewidth = pdpu->catalog->caps->max_linewidth;
|
max_linewidth = pdpu->catalog->caps->max_linewidth;
|
||||||
|
|
||||||
|
drm_rect_rotate(&pipe_cfg->src_rect,
|
||||||
|
new_plane_state->fb->width, new_plane_state->fb->height,
|
||||||
|
new_plane_state->rotation);
|
||||||
|
|
||||||
if ((drm_rect_width(&pipe_cfg->src_rect) > max_linewidth) ||
|
if ((drm_rect_width(&pipe_cfg->src_rect) > max_linewidth) ||
|
||||||
_dpu_plane_calc_clk(&crtc_state->adjusted_mode, pipe_cfg) > max_mdp_clk_rate) {
|
_dpu_plane_calc_clk(&crtc_state->adjusted_mode, pipe_cfg) > max_mdp_clk_rate) {
|
||||||
/*
|
/*
|
||||||
|
@ -914,6 +918,14 @@ static int dpu_plane_atomic_check(struct drm_plane *plane,
|
||||||
r_pipe_cfg->dst_rect.x1 = pipe_cfg->dst_rect.x2;
|
r_pipe_cfg->dst_rect.x1 = pipe_cfg->dst_rect.x2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
drm_rect_rotate_inv(&pipe_cfg->src_rect,
|
||||||
|
new_plane_state->fb->width, new_plane_state->fb->height,
|
||||||
|
new_plane_state->rotation);
|
||||||
|
if (r_pipe->sspp)
|
||||||
|
drm_rect_rotate_inv(&r_pipe_cfg->src_rect,
|
||||||
|
new_plane_state->fb->width, new_plane_state->fb->height,
|
||||||
|
new_plane_state->rotation);
|
||||||
|
|
||||||
ret = dpu_plane_atomic_check_pipe(pdpu, pipe, pipe_cfg, fmt, &crtc_state->adjusted_mode);
|
ret = dpu_plane_atomic_check_pipe(pdpu, pipe, pipe_cfg, fmt, &crtc_state->adjusted_mode);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user