gpu: ipu-v3: image-convert: fix output seam valid interval
authorPhilipp Zabel <p.zabel@pengutronix.de>
Tue, 13 Aug 2019 12:30:25 +0000 (14:30 +0200)
committerPhilipp Zabel <p.zabel@pengutronix.de>
Mon, 19 Aug 2019 14:24:37 +0000 (16:24 +0200)
This fixes a failure to determine any seam if the output size is
exactly 1024 multiplied by the number of tiles in a given direction.
In that case an empty interval out_start == out_end is being passed
to find_best_seam, which looks for a seam out_start <= x < out_end.

Also reduce the interval for all but the left column / top row, to
avoid returning position 0 as best fit.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
drivers/gpu/ipu-v3/ipu-image-convert.c

index 75850fd..40d4508 100644 (file)
@@ -489,9 +489,9 @@ static void find_best_seam(struct ipu_image_convert_ctx *ctx,
        unsigned int out_end;
 
        /* Start within 1024 pixels of the right / bottom edge */
-       out_start = max_t(int, 0, out_edge - 1024);
+       out_start = max_t(int, index * out_align, out_edge - 1024);
        /* End before having to add more columns to the left / rows above */
-       out_end = min_t(unsigned int, out_edge, index * 1024);
+       out_end = min_t(unsigned int, out_edge, index * 1024 + 1);
 
        /*
         * Output tiles must start at a multiple of 8 bytes horizontally and