gpu: ipu-v3: image-convert: Fix input bytesperline for packed formats
authorSteve Longerbeam <slongerbeam@gmail.com>
Wed, 12 Jun 2019 01:16:56 +0000 (18:16 -0700)
committerPhilipp Zabel <p.zabel@pengutronix.de>
Fri, 14 Jun 2019 12:06:16 +0000 (14:06 +0200)
The input bytesperline calculation for packed pixel formats was
incorrect. The min/max clamping values must be multiplied by the
packed bits-per-pixel. This was causing corrupted converted images
when the input format was RGB4 (probably also other input packed
formats).

Fixes: d966e23d61a2c ("gpu: ipu-v3: image-convert: fix bytesperline
adjustment")

Reported-by: Harsha Manjula Mallikarjun <Harsha.ManjulaMallikarjun@in.bosch.com>
Suggested-by: Harsha Manjula Mallikarjun <Harsha.ManjulaMallikarjun@in.bosch.com>
Signed-off-by: Steve Longerbeam <slongerbeam@gmail.com>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
drivers/gpu/ipu-v3/ipu-image-convert.c

index 36eb4c77ad912832af52dfd75da55caa3375cf97..4dfdbd1adf0dcfad03b497f72104ac5f22822550 100644 (file)
@@ -1933,7 +1933,9 @@ void ipu_image_convert_adjust(struct ipu_image *in, struct ipu_image *out,
                clamp_align(in->pix.width, 2 << w_align_in, MAX_W,
                            w_align_in) :
                clamp_align((in->pix.width * infmt->bpp) >> 3,
-                           2 << w_align_in, MAX_W, w_align_in);
+                           ((2 << w_align_in) * infmt->bpp) >> 3,
+                           (MAX_W * infmt->bpp) >> 3,
+                           w_align_in);
        in->pix.sizeimage = infmt->planar ?
                (in->pix.height * in->pix.bytesperline * infmt->bpp) >> 3 :
                in->pix.height * in->pix.bytesperline;