OSDN Git Service

drm/arm/malidp:- Disregard the pitch alignment constraint for AFBC framebuffer.
authorAyan Kumar Halder <ayan.halder@arm.com>
Mon, 19 Nov 2018 14:41:03 +0000 (14:41 +0000)
committerAyan kumar halder <ayan.halder@arm.com>
Tue, 12 Mar 2019 18:25:10 +0000 (18:25 +0000)
Considering the fact that some of the AFBC specific pixel formats are expressed
in bits per pixel (ie bpp which is not byte aligned), the pitch (ie width * bpp)
is not guaranteed to be aligned to burst size (ie 8 or 16 bytes).
For example, DRM_FORMAT_VUY101010 is 30 bits per pixel. For a framebuffer of
width 32 pixels, the pitch will be 120 bytes which is not aligned to burst size
(ie 16 bytes) for DP650.

Changes since v3 (series):
- Added the ack
- Rebased on the latest drm-misc-next

Signed-off-by: Ayan Kumar halder <ayan.halder@arm.com>
Acked-by: Liviu Dudau <liviu.dudau@arm.com>
Acked-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Link: https://patchwork.freedesktop.org/patch/291764/?series=57895&rev=1
drivers/gpu/drm/arm/malidp_planes.c

index 3dc8a6f..044bf7f 100644 (file)
@@ -531,8 +531,8 @@ static int malidp_de_plane_check(struct drm_plane *plane,
        for (i = 0; i < ms->n_planes; i++) {
                u8 alignment = malidp_hw_get_pitch_align(mp->hwdev, rotated);
 
-               if ((fb->pitches[i] * drm_format_info_block_height(fb->format, i))
-                               & (alignment - 1)) {
+               if (((fb->pitches[i] * drm_format_info_block_height(fb->format, i))
+                               & (alignment - 1)) && !(fb->modifier)) {
                        DRM_DEBUG_KMS("Invalid pitch %u for plane %d\n",
                                      fb->pitches[i], i);
                        return -EINVAL;