mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 09:04:39 +02:00
drm/vc4: plane: Fix margin calculations for the right/bottom edges
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>
This commit is contained in:
parent
517db1ab15
commit
b7c3d68216
|
|
@ -312,16 +312,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…
Reference in New Issue
Block a user