aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Longerbeam <slongerbeam@gmail.com>2019-06-11 21:16:55 -0400
committerPhilipp Zabel <p.zabel@pengutronix.de>2019-06-14 08:06:16 -0400
commitff391ecd65a1b8324c49046c3db98d9c8ab29af9 (patch)
tree1f2640ab082ada50ab75644af44c3f93fb0bd31e
parentd1fdb6d8f6a4109a4263176c84b899076a5f8008 (diff)
gpu: ipu-v3: image-convert: Fix input bytesperline width/height align
The output width and height alignment values were being used in the input bytesperline calculation. Fix by separating local vars w_align and h_align into w_align_in, h_align_in, w_align_out, and h_align_out. Fixes: d966e23d61a2c ("gpu: ipu-v3: image-convert: fix bytesperline adjustment") Signed-off-by: Steve Longerbeam <slongerbeam@gmail.com> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
-rw-r--r--drivers/gpu/ipu-v3/ipu-image-convert.c32
1 files changed, 21 insertions, 11 deletions
diff --git a/drivers/gpu/ipu-v3/ipu-image-convert.c b/drivers/gpu/ipu-v3/ipu-image-convert.c
index 36e88434513a..36eb4c77ad91 100644
--- a/drivers/gpu/ipu-v3/ipu-image-convert.c
+++ b/drivers/gpu/ipu-v3/ipu-image-convert.c
@@ -1876,7 +1876,8 @@ void ipu_image_convert_adjust(struct ipu_image *in, struct ipu_image *out,
1876 enum ipu_rotate_mode rot_mode) 1876 enum ipu_rotate_mode rot_mode)
1877{ 1877{
1878 const struct ipu_image_pixfmt *infmt, *outfmt; 1878 const struct ipu_image_pixfmt *infmt, *outfmt;
1879 u32 w_align, h_align; 1879 u32 w_align_out, h_align_out;
1880 u32 w_align_in, h_align_in;
1880 1881
1881 infmt = get_format(in->pix.pixelformat); 1882 infmt = get_format(in->pix.pixelformat);
1882 outfmt = get_format(out->pix.pixelformat); 1883 outfmt = get_format(out->pix.pixelformat);
@@ -1908,22 +1909,31 @@ void ipu_image_convert_adjust(struct ipu_image *in, struct ipu_image *out,
1908 } 1909 }
1909 1910
1910 /* align input width/height */ 1911 /* align input width/height */
1911 w_align = ilog2(tile_width_align(IMAGE_CONVERT_IN, infmt, rot_mode)); 1912 w_align_in = ilog2(tile_width_align(IMAGE_CONVERT_IN, infmt,
1912 h_align = ilog2(tile_height_align(IMAGE_CONVERT_IN, infmt, rot_mode)); 1913 rot_mode));
1913 in->pix.width = clamp_align(in->pix.width, MIN_W, MAX_W, w_align); 1914 h_align_in = ilog2(tile_height_align(IMAGE_CONVERT_IN, infmt,
1914 in->pix.height = clamp_align(in->pix.height, MIN_H, MAX_H, h_align); 1915 rot_mode));
1916 in->pix.width = clamp_align(in->pix.width, MIN_W, MAX_W,
1917 w_align_in);
1918 in->pix.height = clamp_align(in->pix.height, MIN_H, MAX_H,
1919 h_align_in);
1915 1920
1916 /* align output width/height */ 1921 /* align output width/height */
1917 w_align = ilog2(tile_width_align(IMAGE_CONVERT_OUT, outfmt, rot_mode)); 1922 w_align_out = ilog2(tile_width_align(IMAGE_CONVERT_OUT, outfmt,
1918 h_align = ilog2(tile_height_align(IMAGE_CONVERT_OUT, outfmt, rot_mode)); 1923 rot_mode));
1919 out->pix.width = clamp_align(out->pix.width, MIN_W, MAX_W, w_align); 1924 h_align_out = ilog2(tile_height_align(IMAGE_CONVERT_OUT, outfmt,
1920 out->pix.height = clamp_align(out->pix.height, MIN_H, MAX_H, h_align); 1925 rot_mode));
1926 out->pix.width = clamp_align(out->pix.width, MIN_W, MAX_W,
1927 w_align_out);
1928 out->pix.height = clamp_align(out->pix.height, MIN_H, MAX_H,
1929 h_align_out);
1921 1930
1922 /* set input/output strides and image sizes */ 1931 /* set input/output strides and image sizes */
1923 in->pix.bytesperline = infmt->planar ? 1932 in->pix.bytesperline = infmt->planar ?
1924 clamp_align(in->pix.width, 2 << w_align, MAX_W, w_align) : 1933 clamp_align(in->pix.width, 2 << w_align_in, MAX_W,
1934 w_align_in) :
1925 clamp_align((in->pix.width * infmt->bpp) >> 3, 1935 clamp_align((in->pix.width * infmt->bpp) >> 3,
1926 2 << w_align, MAX_W, w_align); 1936 2 << w_align_in, MAX_W, w_align_in);
1927 in->pix.sizeimage = infmt->planar ? 1937 in->pix.sizeimage = infmt->planar ?
1928 (in->pix.height * in->pix.bytesperline * infmt->bpp) >> 3 : 1938 (in->pix.height * in->pix.bytesperline * infmt->bpp) >> 3 :
1929 in->pix.height * in->pix.bytesperline; 1939 in->pix.height * in->pix.bytesperline;