drm/vc4: plane: Fix margin calculations for the right/bottom edges
[ Upstream commit b7c3d6821627861f4ea3e1f2b595d0ed9e80aac8 ] The current plane margin calculation code clips the right and bottom edges of the range based using the left and top margins. This is obviously wrong, so let's fix it. Fixes: 666e73587f90 ("drm/vc4: Take margin setup into account when updating planes") Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> Link: https://lore.kernel.org/r/20220613144800.326124-6-maxime@cerno.tech Signed-off-by: Maxime Ripard <maxime@cerno.tech> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
5aec7cb08b
commit
f517da5234
@ -303,16 +303,16 @@ static int vc4_plane_margins_adj(struct drm_plane_state *pstate)
|
||||
adjhdisplay,
|
||||
crtc_state->mode.hdisplay);
|
||||
vc4_pstate->crtc_x += left;
|
||||
if (vc4_pstate->crtc_x > crtc_state->mode.hdisplay - left)
|
||||
vc4_pstate->crtc_x = crtc_state->mode.hdisplay - left;
|
||||
if (vc4_pstate->crtc_x > crtc_state->mode.hdisplay - right)
|
||||
vc4_pstate->crtc_x = crtc_state->mode.hdisplay - right;
|
||||
|
||||
adjvdisplay = crtc_state->mode.vdisplay - (top + bottom);
|
||||
vc4_pstate->crtc_y = DIV_ROUND_CLOSEST(vc4_pstate->crtc_y *
|
||||
adjvdisplay,
|
||||
crtc_state->mode.vdisplay);
|
||||
vc4_pstate->crtc_y += top;
|
||||
if (vc4_pstate->crtc_y > crtc_state->mode.vdisplay - top)
|
||||
vc4_pstate->crtc_y = crtc_state->mode.vdisplay - top;
|
||||
if (vc4_pstate->crtc_y > crtc_state->mode.vdisplay - bottom)
|
||||
vc4_pstate->crtc_y = crtc_state->mode.vdisplay - bottom;
|
||||
|
||||
vc4_pstate->crtc_w = DIV_ROUND_CLOSEST(vc4_pstate->crtc_w *
|
||||
adjhdisplay,
|
||||
|
Loading…
x
Reference in New Issue
Block a user