drm/vc4: plane: Fix margin calculations for the right/bottom edges
[ Upstream commitb7c3d68216] 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:666e73587f("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
1 changed files with 4 additions and 4 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue