mirror of
https://github.com/torvalds/linux.git
synced 2024-11-29 23:51:37 +00:00
gpu: ipu-v3: image-convert: fix bytesperline adjustment
For planar formats, bytesperline does not depend on BPP. It must always be larger than width and aligned to tile width alignment restrictions. The input bytesperline to ipu_image_convert_adjust() may be uninitialized, so don't rely on input bytesperline as the minimum value for clamp_align(). Use 2 << w_align as the minimum instead. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> [slongerbeam@gmail.com: clamp input bytesperline] Signed-off-by: Steve Longerbeam <slongerbeam@gmail.com> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
This commit is contained in:
parent
ff652fcf84
commit
d966e23d61
@ -1915,10 +1915,18 @@ void ipu_image_convert_adjust(struct ipu_image *in, struct ipu_image *out,
|
||||
out->pix.height = clamp_align(out->pix.height, MIN_H, MAX_H, h_align);
|
||||
|
||||
/* set input/output strides and image sizes */
|
||||
in->pix.bytesperline = (in->pix.width * infmt->bpp) >> 3;
|
||||
in->pix.sizeimage = in->pix.height * in->pix.bytesperline;
|
||||
out->pix.bytesperline = (out->pix.width * outfmt->bpp) >> 3;
|
||||
out->pix.sizeimage = out->pix.height * out->pix.bytesperline;
|
||||
in->pix.bytesperline = infmt->planar ?
|
||||
clamp_align(in->pix.width, 2 << w_align, MAX_W, w_align) :
|
||||
clamp_align((in->pix.width * infmt->bpp) >> 3,
|
||||
2 << w_align, MAX_W, w_align);
|
||||
in->pix.sizeimage = infmt->planar ?
|
||||
(in->pix.height * in->pix.bytesperline * infmt->bpp) >> 3 :
|
||||
in->pix.height * in->pix.bytesperline;
|
||||
out->pix.bytesperline = outfmt->planar ? out->pix.width :
|
||||
(out->pix.width * outfmt->bpp) >> 3;
|
||||
out->pix.sizeimage = outfmt->planar ?
|
||||
(out->pix.height * out->pix.bytesperline * outfmt->bpp) >> 3 :
|
||||
out->pix.height * out->pix.bytesperline;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ipu_image_convert_adjust);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user