diff options
author | Russell King <rmk+kernel@armlinux.org.uk> | 2017-12-08 13:16:22 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@armlinux.org.uk> | 2017-12-08 13:16:22 +0100 |
commit | de0ea9ad2f548dd9e555cac27cf7ade1db5b26ea (patch) | |
tree | 10d5dee637c6f908a3605953417b4c4b2e84343b /drivers | |
parent | drm/armada: improve efficiency of armada_drm_plane_calc_addrs() (diff) | |
download | linux-de0ea9ad2f548dd9e555cac27cf7ade1db5b26ea.tar.xz linux-de0ea9ad2f548dd9e555cac27cf7ade1db5b26ea.zip |
drm/armada: fix YUV planar format framebuffer offsets
We weren't correctly calculating the YUV planar offsets for subsampled
chroma planes correctly - fix up the coordinates for planes 1 and 2.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/armada/armada_crtc.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gpu/drm/armada/armada_crtc.c b/drivers/gpu/drm/armada/armada_crtc.c index 7f7b3e738679..a0f4d2a2a481 100644 --- a/drivers/gpu/drm/armada/armada_crtc.c +++ b/drivers/gpu/drm/armada/armada_crtc.c @@ -176,7 +176,13 @@ void armada_drm_plane_calc_addrs(u32 *addrs, struct drm_framebuffer *fb, if (num_planes > 3) num_planes = 3; - for (i = 0; i < num_planes; i++) + addrs[0] = addr + fb->offsets[0] + y * fb->pitches[0] + + x * format->cpp[0]; + + y /= format->vsub; + x /= format->hsub; + + for (i = 1; i < num_planes; i++) addrs[i] = addr + fb->offsets[i] + y * fb->pitches[i] + x * format->cpp[i]; for (; i < 3; i++) |