diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.10/950-0696-ydrm-vc4-fkms-Fix-margin-calculations-for-the-right-.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.10/950-0696-ydrm-vc4-fkms-Fix-margin-calculations-for-the-right-.patch | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.10/950-0696-ydrm-vc4-fkms-Fix-margin-calculations-for-the-right-.patch b/target/linux/bcm27xx/patches-5.10/950-0696-ydrm-vc4-fkms-Fix-margin-calculations-for-the-right-.patch new file mode 100644 index 0000000000..9454b54b49 --- /dev/null +++ b/target/linux/bcm27xx/patches-5.10/950-0696-ydrm-vc4-fkms-Fix-margin-calculations-for-the-right-.patch @@ -0,0 +1,38 @@ +From e0aaa1acd1f33cc60e2b5c43cf6aac63bf3bbbc9 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson <dave.stevenson@raspberrypi.com> +Date: Mon, 12 Jul 2021 13:06:07 +0100 +Subject: [PATCH] ydrm/vc4: fkms: Fix margin calculations for the + right/bottom edges + +The calculations clipped the right/bottom edge of the clipped +range based on the left/top margins. + +https://github.com/raspberrypi/linux/issues/4447 + +Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> +--- + drivers/gpu/drm/vc4/vc4_firmware_kms.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/drivers/gpu/drm/vc4/vc4_firmware_kms.c ++++ b/drivers/gpu/drm/vc4/vc4_firmware_kms.c +@@ -458,15 +458,15 @@ static int vc4_fkms_margins_adj(struct d + plane->dst_x = DIV_ROUND_CLOSEST(plane->dst_x * adjhdisplay, + (int)crtc_state->mode.hdisplay); + plane->dst_x += left; +- if (plane->dst_x > (int)(crtc_state->mode.hdisplay - left)) +- plane->dst_x = crtc_state->mode.hdisplay - left; ++ if (plane->dst_x > (int)(crtc_state->mode.hdisplay - right)) ++ plane->dst_x = crtc_state->mode.hdisplay - right; + + adjvdisplay = crtc_state->mode.vdisplay - (top + bottom); + plane->dst_y = DIV_ROUND_CLOSEST(plane->dst_y * adjvdisplay, + (int)crtc_state->mode.vdisplay); + plane->dst_y += top; +- if (plane->dst_y > (int)(crtc_state->mode.vdisplay - top)) +- plane->dst_y = crtc_state->mode.vdisplay - top; ++ if (plane->dst_y > (int)(crtc_state->mode.vdisplay - bottom)) ++ plane->dst_y = crtc_state->mode.vdisplay - bottom; + + plane->dst_w = DIV_ROUND_CLOSEST(plane->dst_w * adjhdisplay, + crtc_state->mode.hdisplay); |